Example #1
0
 // setter method
 internal static void SetHeaderVariable(string keyName, DxfCodePair pair, DxfHeader header)
 {
     switch (keyName)
     {
         case ACADMAINTVER:
             EnsureCode(pair, 70);
             header.MaintenenceVersion = (pair.ShortValue);
             break;
         case ACADVER:
             EnsureCode(pair, 1);
             header.Version = DxfAcadVersionStrings.StringToVersion(pair.StringValue);
             break;
         case ANGBASE:
             EnsureCode(pair, 50);
             header.AngleZeroDirection = (pair.DoubleValue);
             break;
         case ANGDIR:
             EnsureCode(pair, 70);
             header.AngleDirection = (DxfAngleDirection)(pair.ShortValue);
             break;
         case ATTDIA:
             EnsureCode(pair, 70);
             header.ShowAttributeEntryDialogs = BoolShort(pair.ShortValue);
             break;
         case ATTMODE:
             EnsureCode(pair, 70);
             header.AttributeVisibility = (DxfAttributeVisibility)(pair.ShortValue);
             break;
         case ATTREQ:
             EnsureCode(pair, 70);
             header.PromptForAttributeOnInsert = BoolShort(pair.ShortValue);
             break;
         case AUNITS:
             EnsureCode(pair, 70);
             header.AngleUnitFormat = (DxfAngleFormat)(pair.ShortValue);
             break;
         case AUPREC:
             EnsureCode(pair, 70);
             header.AngleUnitPrecision = (pair.ShortValue);
             break;
         case AXISMODE:
             EnsureCode(pair, 70);
             header.AxisOn = BoolShort(pair.ShortValue);
             break;
         case AXISUNIT:
             SetPoint(pair, header.AxisTickSpacing);
             break;
         case BLIPMODE:
             EnsureCode(pair, 70);
             header.BlipMode = BoolShort(pair.ShortValue);
             break;
         case CECOLOR:
             EnsureCode(pair, 62);
             header.CurrentEntityColor = DxfColor.FromRawValue(pair.ShortValue);
             break;
         case CELTSCALE:
             EnsureCode(pair, 40);
             header.CurrentEntityLinetypeScale = (pair.DoubleValue);
             break;
         case CELTYPE:
             EnsureCode(pair, 6);
             header.CurrentEntityLinetype = (pair.StringValue);
             break;
         case CELWEIGHT:
             EnsureCode(pair, 370);
             header.NewObjectLineWeight = (pair.ShortValue);
             break;
         case CEPSNID:
             EnsureCode(pair, 390);
             header.NewObjectPlotStyleHandle = (pair.StringValue);
             break;
         case CEPSNTYPE:
             EnsureCode(pair, 380);
             header.NewObjectPlotStyle = (DxfPlotStyle)(pair.DoubleValue);
             break;
         case CHAMFERA:
             EnsureCode(pair, 40);
             header.FirstChamferDistance = (pair.DoubleValue);
             break;
         case CHAMFERB:
             EnsureCode(pair, 40);
             header.SecondChamferDistance = (pair.DoubleValue);
             break;
         case CHAMFERC:
             EnsureCode(pair, 40);
             header.ChamferLength = (pair.DoubleValue);
             break;
         case CHAMFERD:
             EnsureCode(pair, 40);
             header.ChamferAngle = (pair.DoubleValue);
             break;
         case CLAYER:
             EnsureCode(pair, 8);
             header.CurrentLayer = (pair.StringValue);
             break;
         case CMLJUST:
             EnsureCode(pair, 70);
             header.CurrentMultilineJustification = (DxfJustification)(pair.ShortValue);
             break;
         case CMLSCALE:
             EnsureCode(pair, 40);
             header.CurrentMultilineScale = (pair.DoubleValue);
             break;
         case CMLSTYLE:
             switch (pair.Code)
             {
                 case 7:
                     header.CurrentMultilineStyle = (pair.StringValue);
                     break;
                 case 2:
                     header.CurrentMultilineStyle = (pair.StringValue);
                     break;
                 default:
                     Debug.Assert(false, string.Format("Expected code [7, 2], got {0}", pair.Code));
                     break;
             }
             break;
         case COORDS:
             EnsureCode(pair, 70);
             header.CoordinateDisplay = (DxfCoordinateDisplay)(pair.ShortValue);
             break;
         case CPSNID:
             EnsureCode(pair, 390);
             header.NewObjectPlotStyleHandle = (pair.StringValue);
             break;
         case CSHADOW:
             EnsureCode(pair, 280);
             header.ShadowMode = (DxfShadowMode)(pair.ShortValue);
             break;
         case DELOBJ:
             EnsureCode(pair, 70);
             header.RetainDeletedObjects = BoolShort(pair.ShortValue);
             break;
         case DIMADEC:
             EnsureCode(pair, 70);
             header.AngularDimensionPrecision = (pair.ShortValue);
             break;
         case DIMALT:
             EnsureCode(pair, 70);
             header.UseAlternateDimensioning = BoolShort(pair.ShortValue);
             break;
         case DIMALTD:
             EnsureCode(pair, 70);
             header.AlternateDimensioningDecimalPlaces = (pair.ShortValue);
             break;
         case DIMALTF:
             EnsureCode(pair, 40);
             header.AlternateDimensioningScaleFactor = (pair.DoubleValue);
             break;
         case DIMALTRND:
             EnsureCode(pair, 40);
             header.AlternateDimensioningUnitRounding = (pair.DoubleValue);
             break;
         case DIMALTTD:
             EnsureCode(pair, 70);
             header.AlternateDimensioningToleranceDecimalPlaces = (pair.ShortValue);
             break;
         case DIMALTTZ:
             EnsureCode(pair, 70);
             header.AlternateDimensioningToleranceZeroSupression = (DxfUnitZeroSuppression)(pair.ShortValue);
             break;
         case DIMALTU:
             EnsureCode(pair, 70);
             header.AlternateDimensioningUnits = (DxfUnitFormat)(pair.ShortValue);
             break;
         case DIMALTZ:
             EnsureCode(pair, 70);
             header.AlternateDimensioningZeroSupression = (DxfUnitZeroSuppression)(pair.ShortValue);
             break;
         case DIMAPOST:
             EnsureCode(pair, 1);
             header.AlternateDimensioningSuffix = (pair.StringValue);
             break;
         case DIMASO:
             EnsureCode(pair, 70);
             header.CreateAssociativeDimensioning = BoolShort(pair.ShortValue);
             break;
         case DIMASSOC:
             EnsureCode(pair, 280);
             header.DimensionObjectAssociativity = (DxfDimensionAssociativity)(pair.ShortValue);
             break;
         case DIMASZ:
             EnsureCode(pair, 40);
             header.DimensioningArrowSize = (pair.DoubleValue);
             break;
         case DIMATFIT:
             EnsureCode(pair, 70);
             header.DimensionTextAndArrowPlacement = (DxfDimensionFit)(pair.ShortValue);
             break;
         case DIMAUNIT:
             EnsureCode(pair, 70);
             header.DimensioningAngleFormat = (DxfAngleFormat)(pair.ShortValue);
             break;
         case DIMAZIN:
             EnsureCode(pair, 70);
             header.DimensionAngleZeroSuppression = (DxfUnitZeroSuppression)(pair.ShortValue);
             break;
         case DIMBLK:
             switch (pair.Code)
             {
                 case 2:
                     header.ArrowBlockName = (pair.StringValue);
                     break;
                 case 1:
                     header.ArrowBlockName = (pair.StringValue);
                     break;
                 default:
                     Debug.Assert(false, string.Format("Expected code [2, 1], got {0}", pair.Code));
                     break;
             }
             break;
         case DIMBLK1:
             EnsureCode(pair, 1);
             header.FirstArrowBlockName = (pair.StringValue);
             break;
         case DIMBLK2:
             EnsureCode(pair, 1);
             header.SecondArrowBlockName = (pair.StringValue);
             break;
         case DIMCEN:
             EnsureCode(pair, 40);
             header.CenterMarkSize = (pair.DoubleValue);
             break;
         case DIMCLRD:
             EnsureCode(pair, 70);
             header.DimensionLineColor = DxfColor.FromRawValue(pair.ShortValue);
             break;
         case DIMCLRE:
             EnsureCode(pair, 70);
             header.DimensionExtensionLineColor = DxfColor.FromRawValue(pair.ShortValue);
             break;
         case DIMCLRT:
             EnsureCode(pair, 70);
             header.DimensionTextColor = DxfColor.FromRawValue(pair.ShortValue);
             break;
         case DIMDEC:
             EnsureCode(pair, 70);
             header.DimensionUnitToleranceDecimalPlaces = (pair.ShortValue);
             break;
         case DIMDLE:
             EnsureCode(pair, 40);
             header.DimensionLineExtension = (pair.DoubleValue);
             break;
         case DIMDLI:
             EnsureCode(pair, 40);
             header.DimensionLineIncrement = (pair.DoubleValue);
             break;
         case DIMDSEP:
             EnsureCode(pair, 70);
             header.DimensionDecimalSeparatorChar = (char)(pair.ShortValue);
             break;
         case DIMEXE:
             EnsureCode(pair, 40);
             header.DimensionExtensionLineExtension = (pair.DoubleValue);
             break;
         case DIMEXO:
             EnsureCode(pair, 40);
             header.DimensionExtensionLineOffset = (pair.DoubleValue);
             break;
         case DIMFAC:
             EnsureCode(pair, 40);
             header.DimensionTextHeightScaleFactor = (pair.DoubleValue);
             break;
         case DIMFIT:
             EnsureCode(pair, 70);
             header.DimensionTextAndArrowPlacement = (DxfDimensionFit)(pair.ShortValue);
             break;
         case DIMGAP:
             EnsureCode(pair, 40);
             header.DimensionLineGap = (pair.DoubleValue);
             break;
         case DIMJUST:
             EnsureCode(pair, 70);
             header.DimensionTextJustification = (DxfDimensionTextJustification)(pair.ShortValue);
             break;
         case DIMLDRBLK:
             EnsureCode(pair, 1);
             header.DimensionLeaderBlockName = (pair.StringValue);
             break;
         case DIMLFAC:
             EnsureCode(pair, 40);
             header.DimensionLinearMeasurementsScaleFactor = (pair.DoubleValue);
             break;
         case DIMLIM:
             EnsureCode(pair, 70);
             header.GenerateDimensionLimits = BoolShort(pair.ShortValue);
             break;
         case DIMLUNIT:
             EnsureCode(pair, 70);
             header.DimensionNonAngularUnits = (DxfNonAngularUnits)(pair.ShortValue);
             break;
         case DIMLWD:
             EnsureCode(pair, 70);
             header.DimensionLineWeight = DxfLineWeight.FromRawValue(pair.ShortValue);
             break;
         case DIMLWE:
             EnsureCode(pair, 70);
             header.DimensionExtensionLineWeight = DxfLineWeight.FromRawValue(pair.ShortValue);
             break;
         case DIMPOST:
             EnsureCode(pair, 1);
             header.DimensioningSuffix = (pair.StringValue);
             break;
         case DIMRND:
             EnsureCode(pair, 40);
             header.DimensionDistanceRoundingValue = (pair.DoubleValue);
             break;
         case DIMSAH:
             EnsureCode(pair, 70);
             header.UseSeparateArrowBlocksForDimensions = BoolShort(pair.ShortValue);
             break;
         case DIMSCALE:
             EnsureCode(pair, 40);
             header.DimensioningScaleFactor = (pair.DoubleValue);
             break;
         case DIMSD1:
             EnsureCode(pair, 70);
             header.SuppressFirstDimensionExtensionLine = BoolShort(pair.ShortValue);
             break;
         case DIMSD2:
             EnsureCode(pair, 70);
             header.SuppressSecondDimensionExtensionLine = BoolShort(pair.ShortValue);
             break;
         case DIMSE1:
             EnsureCode(pair, 70);
             header.SuppressFirstDimensionExtensionLine = BoolShort(pair.ShortValue);
             break;
         case DIMSE2:
             EnsureCode(pair, 70);
             header.SuppressSecondDimensionExtensionLine = BoolShort(pair.ShortValue);
             break;
         case DIMSHO:
             EnsureCode(pair, 70);
             header.RecomputeDimensionsWhileDragging = BoolShort(pair.ShortValue);
             break;
         case DIMSOXD:
             EnsureCode(pair, 70);
             header.SuppressOutsideExtensionDimensionLines = BoolShort(pair.ShortValue);
             break;
         case DIMSTYLE:
             EnsureCode(pair, 2);
             header.DimensionStyleName = (pair.StringValue);
             break;
         case DIMTAD:
             EnsureCode(pair, 70);
             header.TextAboveDimensionLine = BoolShort(pair.ShortValue);
             break;
         case DIMTDEC:
             EnsureCode(pair, 70);
             header.DimensionToleranceDecimalPlaces = (pair.ShortValue);
             break;
         case DIMTFAC:
             EnsureCode(pair, 40);
             header.DimensionToleranceDisplayScaleFactor = (pair.DoubleValue);
             break;
         case DIMTIH:
             EnsureCode(pair, 70);
             header.DimensionTextInsideHorizontal = BoolShort(pair.ShortValue);
             break;
         case DIMTIX:
             EnsureCode(pair, 70);
             header.ForceDimensionTextInsideExtensions = BoolShort(pair.ShortValue);
             break;
         case DIMTM:
             EnsureCode(pair, 40);
             header.DimensionMinusTolerance = (pair.DoubleValue);
             break;
         case DIMTMOVE:
             EnsureCode(pair, 70);
             header.DimensionTextMovementRule = (DxfDimensionTextMovementRule)(pair.ShortValue);
             break;
         case DIMTOFL:
             EnsureCode(pair, 70);
             header.ForceDimensionLineExtensionsOutsideIfTextIs = BoolShort(pair.ShortValue);
             break;
         case DIMTOH:
             EnsureCode(pair, 70);
             header.DimensionTextOutsideHorizontal = BoolShort(pair.ShortValue);
             break;
         case DIMTOL:
             EnsureCode(pair, 70);
             header.GenerateDimensionTolerances = BoolShort(pair.ShortValue);
             break;
         case DIMTOLJ:
             EnsureCode(pair, 70);
             header.DimensionToleranceVerticalJustification = (DxfJustification)(pair.ShortValue);
             break;
         case DIMTP:
             EnsureCode(pair, 40);
             header.DimensionPlusTolerance = (pair.DoubleValue);
             break;
         case DIMTSZ:
             EnsureCode(pair, 40);
             header.DimensioningTickSize = (pair.DoubleValue);
             break;
         case DIMTVP:
             EnsureCode(pair, 40);
             header.DimensionVerticalTextPosition = (pair.DoubleValue);
             break;
         case DIMTXSTY:
             EnsureCode(pair, 7);
             header.DimensionTextStyle = (pair.StringValue);
             break;
         case DIMTXT:
             EnsureCode(pair, 40);
             header.DimensioningTextHeight = (pair.DoubleValue);
             break;
         case DIMTZIN:
             EnsureCode(pair, 70);
             header.DimensionToleranceZeroSuppression = (DxfUnitZeroSuppression)(pair.ShortValue);
             break;
         case DIMUNIT:
             EnsureCode(pair, 70);
             header.DimensionUnitFormat = (DxfUnitFormat)(pair.ShortValue);
             break;
         case DIMUPT:
             EnsureCode(pair, 70);
             header.DimensionCursorControlsTextPosition = BoolShort(pair.ShortValue);
             break;
         case DIMZIN:
             EnsureCode(pair, 70);
             header.DimensionUnitZeroSuppression = (DxfUnitZeroSuppression)(pair.ShortValue);
             break;
         case DISPSILH:
             EnsureCode(pair, 70);
             header.DisplaySilhouetteCurvesInWireframeMode = BoolShort(pair.ShortValue);
             break;
         case DRAGMODE:
             EnsureCode(pair, 70);
             header.DragMode = (DxfDragMode)(pair.ShortValue);
             break;
         case DRAGVS:
             EnsureCode(pair, 349);
             header.ThreeDSolidCreationVisualStyle = (pair.StringValue);
             break;
         case DWGCODEPAGE:
             switch (pair.Code)
             {
                 case 70:
                     header.DrawingCodePage = StringShort(pair.ShortValue);
                     break;
                 case 3:
                     header.DrawingCodePage = (pair.StringValue);
                     break;
                 default:
                     Debug.Assert(false, string.Format("Expected code [70, 3], got {0}", pair.Code));
                     break;
             }
             break;
         case ELEVATION:
             EnsureCode(pair, 40);
             header.Elevation = (pair.DoubleValue);
             break;
         case ENDCAPS:
             EnsureCode(pair, 280);
             header.EndCapSetting = (DxfEndCapSetting)(pair.ShortValue);
             break;
         case EXTMAX:
             SetPoint(pair, header.MaximumDrawingExtents);
             break;
         case EXTMIN:
             SetPoint(pair, header.MinimumDrawingExtents);
             break;
         case EXTNAMES:
             EnsureCode(pair, 290);
             header.UseACad2000SymbolTableNaming = (pair.BoolValue);
             break;
         case FILLETRAD:
             EnsureCode(pair, 40);
             header.FilletRadius = (pair.DoubleValue);
             break;
         case FILLMODE:
             EnsureCode(pair, 70);
             header.FillModeOn = BoolShort(pair.ShortValue);
             break;
         case FINGERPRINTGUID:
             EnsureCode(pair, 2);
             header.FingerprintGuid = GuidString(pair.StringValue);
             break;
         case HALOGAP:
             EnsureCode(pair, 280);
             header.HaloGapPercent = (double)(pair.ShortValue);
             break;
         case HANDLING:
             EnsureCode(pair, 70);
             header.HandlesEnabled = BoolShort(pair.ShortValue);
             break;
         case HANDSEED:
             EnsureCode(pair, 5);
             header.NextAvailableHandle = UIntHandle(pair.StringValue);
             break;
         case HIDETEXT:
             switch (pair.Code)
             {
                 case 290:
                     header.HideTextObjectsWhenProducintHiddenView = (pair.BoolValue);
                     break;
                 case 280:
                     header.HideTextObjectsWhenProducintHiddenView = BoolShort(pair.ShortValue);
                     break;
                 default:
                     Debug.Assert(false, string.Format("Expected code [290, 280], got {0}", pair.Code));
                     break;
             }
             break;
         case HYPERLINKBASE:
             EnsureCode(pair, 1);
             header.HyperlinBase = (pair.StringValue);
             break;
         case INDEXCTL:
             EnsureCode(pair, 280);
             header.LayerAndSpatialIndexSaveMode = (DxfLayerAndSpatialIndexSaveMode)(pair.ShortValue);
             break;
         case INSBASE:
             SetPoint(pair, header.InsertionBase);
             break;
         case INSUNITS:
             EnsureCode(pair, 70);
             header.DefaultDrawingUnits = (DxfUnits)(pair.ShortValue);
             break;
         case INTERFERECOLOR:
             EnsureCode(pair, 62);
             header.InterferenceObjectColor = DxfColor.FromRawValue(pair.ShortValue);
             break;
         case INTERFEREOBJVS:
             EnsureCode(pair, 345);
             header.InterferenceObjectVisualStylePointer = (pair.StringValue);
             break;
         case INTERFEREVPVS:
             EnsureCode(pair, 346);
             header.InterferenceViewPortVisualStylePointer = (pair.StringValue);
             break;
         case INTERSECTIONCOLOR:
             EnsureCode(pair, 70);
             header.IntersectionPolylineColor = DxfColor.FromRawValue(pair.ShortValue);
             break;
         case INTERSECTIONDISPLAY:
             switch (pair.Code)
             {
                 case 290:
                     header.DisplayIntersectionPolylines = (pair.BoolValue);
                     break;
                 case 280:
                     header.DisplayIntersectionPolylines = BoolShort(pair.ShortValue);
                     break;
                 default:
                     Debug.Assert(false, string.Format("Expected code [290, 280], got {0}", pair.Code));
                     break;
             }
             break;
         case JOINSTYLE:
             EnsureCode(pair, 280);
             header.LineweightJointSetting = (DxfJoinStyle)(pair.ShortValue);
             break;
         case LIMCHECK:
             EnsureCode(pair, 70);
             header.UseLimitsChecking = BoolShort(pair.ShortValue);
             break;
         case LIMMAX:
             SetPoint(pair, header.MaximumDrawingLimits);
             break;
         case LIMMIN:
             SetPoint(pair, header.MinimumDrawingLimits);
             break;
         case LTSCALE:
             EnsureCode(pair, 40);
             header.LinetypeScale = (pair.DoubleValue);
             break;
         case LUNITS:
             EnsureCode(pair, 70);
             header.UnitFormat = (DxfUnitFormat)(pair.ShortValue);
             break;
         case LUPREC:
             EnsureCode(pair, 70);
             header.UnitPrecision = (pair.ShortValue);
             break;
         case LWDISPLAY:
             EnsureCode(pair, 290);
             header.DisplayLinewieghtInModelAndLayoutTab = (pair.BoolValue);
             break;
         case MAXACTVP:
             EnsureCode(pair, 70);
             header.MaximumActiveViewports = (pair.ShortValue);
             break;
         case MEASUREMENT:
             EnsureCode(pair, 70);
             header.DrawingUnits = (DxfDrawingUnits)(pair.ShortValue);
             break;
         case MENU:
             EnsureCode(pair, 1);
             header.FileName = (pair.StringValue);
             break;
         case MIRRTEXT:
             EnsureCode(pair, 70);
             header.MirrorText = BoolShort(pair.ShortValue);
             break;
         case OBSCOLOR:
             EnsureCode(pair, 70);
             header.ObscuredLineColor = DxfColor.FromRawValue(pair.ShortValue);
             break;
         case OBSLTYPE:
             EnsureCode(pair, 280);
             header.ObscuredLineTypeStyle = (DxfLinetypeStyle)(pair.ShortValue);
             break;
         case ORTHOMODE:
             EnsureCode(pair, 70);
             header.DrawOrthoganalLines = BoolShort(pair.ShortValue);
             break;
         case OSMODE:
             EnsureCode(pair, 70);
             header.ObjectSnapFlags = (int)(pair.ShortValue);
             break;
         case PDMODE:
             EnsureCode(pair, 70);
             header.PointDisplayMode = (int)(pair.ShortValue);
             break;
         case PDSIZE:
             EnsureCode(pair, 40);
             header.PointDisplaySize = (pair.DoubleValue);
             break;
         case PELEVATION:
             EnsureCode(pair, 40);
             header.PaperspaceElevation = (pair.DoubleValue);
             break;
         case PEXTMAX:
             SetPoint(pair, header.PaperspaceMaximumDrawingExtents);
             break;
         case PEXTMIN:
             SetPoint(pair, header.PaperspaceMinimumDrawingExtents);
             break;
         case PICKSTYLE:
             EnsureCode(pair, 70);
             header.PickStyle = (DxfPickStyle)(pair.ShortValue);
             break;
         case PINSBASE:
             SetPoint(pair, header.PaperspaceInsertionBase);
             break;
         case PLIMCHECK:
             EnsureCode(pair, 70);
             header.LimitCheckingInPaperspace = BoolShort(pair.ShortValue);
             break;
         case PLIMMAX:
             SetPoint(pair, header.PaperspaceMaximumDrawingLimits);
             break;
         case PLIMMIN:
             SetPoint(pair, header.PaperspaceMinimumDrawingLimits);
             break;
         case PLINEGEN:
             EnsureCode(pair, 70);
             header.IsPolylineContinuousAroundVerticies = BoolShort(pair.ShortValue);
             break;
         case PLINEWID:
             EnsureCode(pair, 40);
             header.DefaultPolylineWidth = (pair.DoubleValue);
             break;
         case PROJECTNAME:
             EnsureCode(pair, 1);
             header.ProjectName = (pair.StringValue);
             break;
         case PROXYGRAPHICS:
             EnsureCode(pair, 70);
             header.SaveProxyGraphics = BoolShort(pair.ShortValue);
             break;
         case PSLTSCALE:
             EnsureCode(pair, 70);
             header.ScaleLinetypesInPaperspace = BoolShort(pair.ShortValue);
             break;
         case PSTYLEMODE:
             EnsureCode(pair, 290);
             header.UsesColorDependentPlotStyleTables = (pair.BoolValue);
             break;
         case PSVPSCALE:
             EnsureCode(pair, 40);
             header.ViewportViewScaleFactor = (pair.DoubleValue);
             break;
         case PUCSBASE:
             EnsureCode(pair, 2);
             header.PaperspaceUCSDefinitionName = (pair.StringValue);
             break;
         case PUCSNAME:
             EnsureCode(pair, 2);
             header.PaperspaceUCSName = (pair.StringValue);
             break;
         case PUCSORG:
             SetPoint(pair, header.PaperspaceUCSOrigin);
             break;
         case PUCSORGBACK:
             SetPoint(pair, header.PaperspaceUCSOriginBack);
             break;
         case PUCSORGBOTTOM:
             SetPoint(pair, header.PaperspaceUCSOriginBottom);
             break;
         case PUCSORGFRONT:
             SetPoint(pair, header.PaperspaceUCSOriginFront);
             break;
         case PUCSORGLEFT:
             SetPoint(pair, header.PaperspaceUCSOriginLeft);
             break;
         case PUCSORGRIGHT:
             SetPoint(pair, header.PaperspaceUCSOriginRight);
             break;
         case PUCSORGTOP:
             SetPoint(pair, header.PaperspaceUCSOriginTop);
             break;
         case PUCSORTHOREF:
             EnsureCode(pair, 2);
             header.PaperspaceOrthoUCSReference = (pair.StringValue);
             break;
         case PUCSORTHOVIEW:
             EnsureCode(pair, 70);
             header.PaperspaceOrthographicViewType = (DxfOrthographicViewType)(pair.ShortValue);
             break;
         case PUCSXDIR:
             SetPoint(pair, header.PaperspaceXAxis);
             break;
         case PUCSYDIR:
             SetPoint(pair, header.PaperspaceYAxis);
             break;
         case QTEXTMODE:
             EnsureCode(pair, 70);
             header.UseQuickTextMode = BoolShort(pair.ShortValue);
             break;
         case REGENMODE:
             EnsureCode(pair, 70);
             header.UseRegenMode = BoolShort(pair.ShortValue);
             break;
         case SHADEDGE:
             EnsureCode(pair, 70);
             header.EdgeShading = (DxfShadeEdgeMode)(pair.ShortValue);
             break;
         case SHADEDIF:
             EnsureCode(pair, 70);
             header.PercentAmbientToDiffuse = (pair.ShortValue);
             break;
         case SHADOWPLANELOCATION:
             EnsureCode(pair, 40);
             header.ShadowPlaneZOffset = (pair.DoubleValue);
             break;
         case SKETCHINC:
             EnsureCode(pair, 40);
             header.SketchRecordIncrement = (pair.DoubleValue);
             break;
         case SKPOLY:
             EnsureCode(pair, 70);
             header.PolylineSketchMode = (DxfPolySketchMode)(pair.ShortValue);
             break;
         case SORTENTS:
             EnsureCode(pair, 280);
             header.ObjectSortingMethodsFlags = (int)(pair.ShortValue);
             break;
         case SPLFRAME:
             EnsureCode(pair, 70);
             header.DisplaySplinePolygonControl = BoolShort(pair.ShortValue);
             break;
         case SPLINESEGS:
             EnsureCode(pair, 70);
             header.LineSegmentsPerSplinePatch = (pair.ShortValue);
             break;
         case SPLINETYPE:
             EnsureCode(pair, 70);
             header.PEditSplineCurveType = (DxfPolylineCurvedAndSmoothSurfaceType)(pair.ShortValue);
             break;
         case SURFTAB1:
             EnsureCode(pair, 70);
             header.MeshTabulationsInFirstDirection = (pair.ShortValue);
             break;
         case SURFTAB2:
             EnsureCode(pair, 70);
             header.MeshTabulationsInSecondDirection = (pair.ShortValue);
             break;
         case SURFTYPE:
             EnsureCode(pair, 70);
             header.PEditSmoothSurfaceType = (DxfPolylineCurvedAndSmoothSurfaceType)(pair.ShortValue);
             break;
         case SURFU:
             EnsureCode(pair, 70);
             header.PEditSmoothMDensith = (pair.ShortValue);
             break;
         case SURFV:
             EnsureCode(pair, 70);
             header.PEditSmoothNDensith = (pair.ShortValue);
             break;
         case TDCREATE:
             EnsureCode(pair, 40);
             header.CreationDate = DateDouble(pair.DoubleValue);
             break;
         case TDINDWG:
             EnsureCode(pair, 40);
             header.TimeInDrawing = TimeSpanDouble(pair.DoubleValue);
             break;
         case TDUCREATE:
             EnsureCode(pair, 40);
             header.CreationDateUniversal = DateDouble(pair.DoubleValue);
             break;
         case TDUPDATE:
             EnsureCode(pair, 40);
             header.UpdateDate = DateDouble(pair.DoubleValue);
             break;
         case TDUSRTIMER:
             EnsureCode(pair, 40);
             header.UserElapsedTimer = TimeSpanDouble(pair.DoubleValue);
             break;
         case TDUUPDATE:
             EnsureCode(pair, 40);
             header.UpdateDateUniversal = DateDouble(pair.DoubleValue);
             break;
         case TEXTSIZE:
             EnsureCode(pair, 40);
             header.DefaultTextHeight = (pair.DoubleValue);
             break;
         case TEXTSTYLE:
             EnsureCode(pair, 7);
             header.TextStyle = (pair.StringValue);
             break;
         case THICKNESS:
             EnsureCode(pair, 40);
             header.Thickness = (pair.DoubleValue);
             break;
         case TILEMODE:
             EnsureCode(pair, 70);
             header.PreviousReleaseTileCompatability = BoolShort(pair.ShortValue);
             break;
         case TRACEWID:
             EnsureCode(pair, 40);
             header.TraceWidth = (pair.DoubleValue);
             break;
         case TREEDEPTH:
             EnsureCode(pair, 70);
             header.SpacialIndexMaxDepth = (pair.ShortValue);
             break;
         case UCSBASE:
             EnsureCode(pair, 2);
             header.UCSDefinitionName = (pair.StringValue);
             break;
         case UCSNAME:
             switch (pair.Code)
             {
                 case 1:
                     header.UCSName = (pair.StringValue);
                     break;
                 case 2:
                     header.UCSName = (pair.StringValue);
                     break;
                 default:
                     Debug.Assert(false, string.Format("Expected code [1, 2], got {0}", pair.Code));
                     break;
             }
             break;
         case UCSORG:
             SetPoint(pair, header.UCSOrigin);
             break;
         case UCSORGBACK:
             SetPoint(pair, header.UCSOriginBack);
             break;
         case UCSORGBOTTOM:
             SetPoint(pair, header.UCSOriginBottom);
             break;
         case UCSORGFRONT:
             SetPoint(pair, header.UCSOriginFront);
             break;
         case UCSORGLEFT:
             SetPoint(pair, header.UCSOriginLeft);
             break;
         case UCSORGRIGHT:
             SetPoint(pair, header.UCSOriginRight);
             break;
         case UCSORGTOP:
             SetPoint(pair, header.UCSOriginTop);
             break;
         case UCSORTHOREF:
             EnsureCode(pair, 2);
             header.OrthoUCSReference = (pair.StringValue);
             break;
         case UCSORTHOVIEW:
             EnsureCode(pair, 70);
             header.OrthgraphicViewType = (DxfOrthographicViewType)(pair.ShortValue);
             break;
         case UCSXDIR:
             SetPoint(pair, header.UCSXAxis);
             break;
         case UCSYDIR:
             SetPoint(pair, header.UCSYAxis);
             break;
         case UNITMODE:
             EnsureCode(pair, 70);
             header.DisplayFractionsInInput = BoolShort(pair.ShortValue);
             break;
         case USERI1:
             EnsureCode(pair, 70);
             header.UserInt1 = (pair.ShortValue);
             break;
         case USERI2:
             EnsureCode(pair, 70);
             header.UserInt2 = (pair.ShortValue);
             break;
         case USERI3:
             EnsureCode(pair, 70);
             header.UserInt3 = (pair.ShortValue);
             break;
         case USERI4:
             EnsureCode(pair, 70);
             header.UserInt4 = (pair.ShortValue);
             break;
         case USERI5:
             EnsureCode(pair, 70);
             header.UserInt5 = (pair.ShortValue);
             break;
         case USERR1:
             EnsureCode(pair, 40);
             header.UserReal1 = (pair.DoubleValue);
             break;
         case USERR2:
             EnsureCode(pair, 40);
             header.UserReal2 = (pair.DoubleValue);
             break;
         case USERR3:
             EnsureCode(pair, 40);
             header.UserReal3 = (pair.DoubleValue);
             break;
         case USERR4:
             EnsureCode(pair, 40);
             header.UserReal4 = (pair.DoubleValue);
             break;
         case USERR5:
             EnsureCode(pair, 40);
             header.UserReal5 = (pair.DoubleValue);
             break;
         case USRTIMER:
             EnsureCode(pair, 70);
             header.UserTimerOn = BoolShort(pair.ShortValue);
             break;
         case VERSIONGUID:
             EnsureCode(pair, 2);
             header.VersionGuid = GuidString(pair.StringValue);
             break;
         case VISRETAIN:
             EnsureCode(pair, 70);
             header.RetainXRefDependentVisibilitySettings = BoolShort(pair.ShortValue);
             break;
         case WORLDVIEW:
             EnsureCode(pair, 70);
             header.SetUCSToWCSInDViewOrVPoint = BoolShort(pair.ShortValue);
             break;
         case XCLIPFRAME:
             switch (pair.Code)
             {
                 case 290:
                     header.IsXRefClippingBoundaryVisible = (pair.BoolValue);
                     break;
                 case 280:
                     header.IsXRefClippingBoundaryVisible = BoolShort(pair.ShortValue);
                     break;
                 default:
                     Debug.Assert(false, string.Format("Expected code [290, 280], got {0}", pair.Code));
                     break;
             }
             break;
         case XEDIT:
             EnsureCode(pair, 290);
             header.CanUseInPlaceReferenceEditing = (pair.BoolValue);
             break;
         default:
             // unsupported variable
             break;
     }
 }
Example #2
0
        // build list of code value pairs
        internal static void AddValueToList(List<DxfCodePair> list, DxfHeader header, DxfAcadVersion version)
        {
            // ACADMAINTVER
            if (version >= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, ACADMAINTVER));
                list.Add(new DxfCodePair(70, (header.MaintenenceVersion)));
            }

            // ACADVER
            list.Add(new DxfCodePair(9, ACADVER));
            list.Add(new DxfCodePair(1, DxfAcadVersionStrings.VersionToString(header.Version)));

            // ANGBASE
            list.Add(new DxfCodePair(9, ANGBASE));
            list.Add(new DxfCodePair(50, (header.AngleZeroDirection)));

            // ANGDIR
            list.Add(new DxfCodePair(9, ANGDIR));
            list.Add(new DxfCodePair(70, (short)(header.AngleDirection)));

            // ATTDIA
            if (version <= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, ATTDIA));
                list.Add(new DxfCodePair(70, BoolShort(header.ShowAttributeEntryDialogs)));
            }

            // ATTMODE
            list.Add(new DxfCodePair(9, ATTMODE));
            list.Add(new DxfCodePair(70, (short)(header.AttributeVisibility)));

            // ATTREQ
            if (version <= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, ATTREQ));
                list.Add(new DxfCodePair(70, BoolShort(header.PromptForAttributeOnInsert)));
            }

            // AUNITS
            list.Add(new DxfCodePair(9, AUNITS));
            list.Add(new DxfCodePair(70, (short)(header.AngleUnitFormat)));

            // AUPREC
            list.Add(new DxfCodePair(9, AUPREC));
            list.Add(new DxfCodePair(70, (header.AngleUnitPrecision)));

            // AXISMODE
            if (version <= DxfAcadVersion.R10)
            {
                list.Add(new DxfCodePair(9, AXISMODE));
                list.Add(new DxfCodePair(70, BoolShort(header.AxisOn)));
            }

            // AXISUNIT
            if (version <= DxfAcadVersion.R10)
            {
                list.Add(new DxfCodePair(9, AXISUNIT));
                list.Add(new DxfCodePair(10, header.AxisTickSpacing?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.AxisTickSpacing?.Y ?? default(double)));
            }

            // BLIPMODE
            if (version <= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, BLIPMODE));
                list.Add(new DxfCodePair(70, BoolShort(header.BlipMode)));
            }

            // CECOLOR
            list.Add(new DxfCodePair(9, CECOLOR));
            list.Add(new DxfCodePair(62, DxfColor.GetRawValue(header.CurrentEntityColor)));

            // CELTSCALE
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, CELTSCALE));
                list.Add(new DxfCodePair(40, (header.CurrentEntityLinetypeScale)));
            }

            // CELTYPE
            list.Add(new DxfCodePair(9, CELTYPE));
            list.Add(new DxfCodePair(6, (header.CurrentEntityLinetype)));

            // CELWEIGHT
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, CELWEIGHT));
                list.Add(new DxfCodePair(370, (header.NewObjectLineWeight)));
            }

            // CEPSNID
            if (version >= DxfAcadVersion.R2004)
            {
                list.Add(new DxfCodePair(9, CEPSNID));
                list.Add(new DxfCodePair(390, (header.NewObjectPlotStyleHandle)));
            }

            // CEPSNTYPE
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, CEPSNTYPE));
                list.Add(new DxfCodePair(380, (double)(header.NewObjectPlotStyle)));
            }

            // CHAMFERA
            list.Add(new DxfCodePair(9, CHAMFERA));
            list.Add(new DxfCodePair(40, (header.FirstChamferDistance)));

            // CHAMFERB
            list.Add(new DxfCodePair(9, CHAMFERB));
            list.Add(new DxfCodePair(40, (header.SecondChamferDistance)));

            // CHAMFERC
            if (version >= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, CHAMFERC));
                list.Add(new DxfCodePair(40, (header.ChamferLength)));
            }

            // CHAMFERD
            if (version >= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, CHAMFERD));
                list.Add(new DxfCodePair(40, (header.ChamferAngle)));
            }

            // CLAYER
            list.Add(new DxfCodePair(9, CLAYER));
            list.Add(new DxfCodePair(8, (header.CurrentLayer)));

            // CMLJUST
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, CMLJUST));
                list.Add(new DxfCodePair(70, (short)(header.CurrentMultilineJustification)));
            }

            // CMLSCALE
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, CMLSCALE));
                list.Add(new DxfCodePair(40, (header.CurrentMultilineScale)));
            }

            // CMLSTYLE
            if (version == DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, CMLSTYLE));
                list.Add(new DxfCodePair(7, (header.CurrentMultilineStyle)));
            }

            // CMLSTYLE
            if (version >= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, CMLSTYLE));
                list.Add(new DxfCodePair(2, (header.CurrentMultilineStyle)));
            }

            // COORDS
            if (version <= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, COORDS));
                list.Add(new DxfCodePair(70, (short)(header.CoordinateDisplay)));
            }

            // CPSNID
            if (version == DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, CPSNID));
                list.Add(new DxfCodePair(390, (header.NewObjectPlotStyleHandle)));
            }

            // CSHADOW
            if (version >= DxfAcadVersion.R2007)
            {
                list.Add(new DxfCodePair(9, CSHADOW));
                list.Add(new DxfCodePair(280, (short)(header.ShadowMode)));
            }

            // DELOBJ
            if (version >= DxfAcadVersion.R13 && version <= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, DELOBJ));
                list.Add(new DxfCodePair(70, BoolShort(header.RetainDeletedObjects)));
            }

            // DIMADEC
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, DIMADEC));
                list.Add(new DxfCodePair(70, (header.AngularDimensionPrecision)));
            }

            // DIMALT
            list.Add(new DxfCodePair(9, DIMALT));
            list.Add(new DxfCodePair(70, BoolShort(header.UseAlternateDimensioning)));

            // DIMALTD
            list.Add(new DxfCodePair(9, DIMALTD));
            list.Add(new DxfCodePair(70, (header.AlternateDimensioningDecimalPlaces)));

            // DIMALTF
            list.Add(new DxfCodePair(9, DIMALTF));
            list.Add(new DxfCodePair(40, (header.AlternateDimensioningScaleFactor)));

            // DIMALTRND
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, DIMALTRND));
                list.Add(new DxfCodePair(40, (header.AlternateDimensioningUnitRounding)));
            }

            // DIMALTTD
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMALTTD));
                list.Add(new DxfCodePair(70, (header.AlternateDimensioningToleranceDecimalPlaces)));
            }

            // DIMALTTZ
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMALTTZ));
                list.Add(new DxfCodePair(70, (short)(header.AlternateDimensioningToleranceZeroSupression)));
            }

            // DIMALTU
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMALTU));
                list.Add(new DxfCodePair(70, (short)(header.AlternateDimensioningUnits)));
            }

            // DIMALTZ
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMALTZ));
                list.Add(new DxfCodePair(70, (short)(header.AlternateDimensioningZeroSupression)));
            }

            // DIMAPOST
            list.Add(new DxfCodePair(9, DIMAPOST));
            list.Add(new DxfCodePair(1, (header.AlternateDimensioningSuffix)));

            // DIMASO
            list.Add(new DxfCodePair(9, DIMASO));
            list.Add(new DxfCodePair(70, BoolShort(header.CreateAssociativeDimensioning)));

            // DIMASSOC
            if (version >= DxfAcadVersion.R2004)
            {
                list.Add(new DxfCodePair(9, DIMASSOC));
                list.Add(new DxfCodePair(280, (short)(header.DimensionObjectAssociativity)));
            }

            // DIMASZ
            list.Add(new DxfCodePair(9, DIMASZ));
            list.Add(new DxfCodePair(40, (header.DimensioningArrowSize)));

            // DIMATFIT
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, DIMATFIT));
                list.Add(new DxfCodePair(70, (short)(header.DimensionTextAndArrowPlacement)));
            }

            // DIMAUNIT
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMAUNIT));
                list.Add(new DxfCodePair(70, (short)(header.DimensioningAngleFormat)));
            }

            // DIMAZIN
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, DIMAZIN));
                list.Add(new DxfCodePair(70, (short)(header.DimensionAngleZeroSuppression)));
            }

            // DIMBLK
            if (version <= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMBLK));
                list.Add(new DxfCodePair(2, (header.ArrowBlockName)));
            }

            // DIMBLK
            if (version >= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, DIMBLK));
                list.Add(new DxfCodePair(1, (header.ArrowBlockName)));
            }

            // DIMBLK1
            list.Add(new DxfCodePair(9, DIMBLK1));
            list.Add(new DxfCodePair(1, (header.FirstArrowBlockName)));

            // DIMBLK2
            list.Add(new DxfCodePair(9, DIMBLK2));
            list.Add(new DxfCodePair(1, (header.SecondArrowBlockName)));

            // DIMCEN
            list.Add(new DxfCodePair(9, DIMCEN));
            list.Add(new DxfCodePair(40, (header.CenterMarkSize)));

            // DIMCLRD
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, DIMCLRD));
                list.Add(new DxfCodePair(70, DxfColor.GetRawValue(header.DimensionLineColor)));
            }

            // DIMCLRE
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, DIMCLRE));
                list.Add(new DxfCodePair(70, DxfColor.GetRawValue(header.DimensionExtensionLineColor)));
            }

            // DIMCLRT
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, DIMCLRT));
                list.Add(new DxfCodePair(70, DxfColor.GetRawValue(header.DimensionTextColor)));
            }

            // DIMDEC
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMDEC));
                list.Add(new DxfCodePair(70, (header.DimensionUnitToleranceDecimalPlaces)));
            }

            // DIMDLE
            list.Add(new DxfCodePair(9, DIMDLE));
            list.Add(new DxfCodePair(40, (header.DimensionLineExtension)));

            // DIMDLI
            list.Add(new DxfCodePair(9, DIMDLI));
            list.Add(new DxfCodePair(40, (header.DimensionLineIncrement)));

            // DIMDSEP
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, DIMDSEP));
                list.Add(new DxfCodePair(70, (short)(header.DimensionDecimalSeparatorChar)));
            }

            // DIMEXE
            list.Add(new DxfCodePair(9, DIMEXE));
            list.Add(new DxfCodePair(40, (header.DimensionExtensionLineExtension)));

            // DIMEXO
            list.Add(new DxfCodePair(9, DIMEXO));
            list.Add(new DxfCodePair(40, (header.DimensionExtensionLineOffset)));

            // DIMFAC
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, DIMFAC));
                list.Add(new DxfCodePair(40, (header.DimensionTextHeightScaleFactor)));
            }

            // DIMFIT
            if (version >= DxfAcadVersion.R13 && version <= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, DIMFIT));
                list.Add(new DxfCodePair(70, (short)(header.DimensionTextAndArrowPlacement)));
            }

            // DIMGAP
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, DIMGAP));
                list.Add(new DxfCodePair(40, (header.DimensionLineGap)));
            }

            // DIMJUST
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMJUST));
                list.Add(new DxfCodePair(70, (short)(header.DimensionTextJustification)));
            }

            // DIMLDRBLK
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, DIMLDRBLK));
                list.Add(new DxfCodePair(1, (header.DimensionLeaderBlockName)));
            }

            // DIMLFAC
            list.Add(new DxfCodePair(9, DIMLFAC));
            list.Add(new DxfCodePair(40, (header.DimensionLinearMeasurementsScaleFactor)));

            // DIMLIM
            list.Add(new DxfCodePair(9, DIMLIM));
            list.Add(new DxfCodePair(70, BoolShort(header.GenerateDimensionLimits)));

            // DIMLUNIT
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, DIMLUNIT));
                list.Add(new DxfCodePair(70, (short)(header.DimensionNonAngularUnits)));
            }

            // DIMLWD
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, DIMLWD));
                list.Add(new DxfCodePair(70, DxfLineWeight.GetRawValue(header.DimensionLineWeight)));
            }

            // DIMLWE
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, DIMLWE));
                list.Add(new DxfCodePair(70, DxfLineWeight.GetRawValue(header.DimensionExtensionLineWeight)));
            }

            // DIMPOST
            list.Add(new DxfCodePair(9, DIMPOST));
            list.Add(new DxfCodePair(1, (header.DimensioningSuffix)));

            // DIMRND
            list.Add(new DxfCodePair(9, DIMRND));
            list.Add(new DxfCodePair(40, (header.DimensionDistanceRoundingValue)));

            // DIMSAH
            list.Add(new DxfCodePair(9, DIMSAH));
            list.Add(new DxfCodePair(70, BoolShort(header.UseSeparateArrowBlocksForDimensions)));

            // DIMSCALE
            list.Add(new DxfCodePair(9, DIMSCALE));
            list.Add(new DxfCodePair(40, (header.DimensioningScaleFactor)));

            // DIMSD1
            list.Add(new DxfCodePair(9, DIMSD1));
            list.Add(new DxfCodePair(70, BoolShort(header.SuppressFirstDimensionExtensionLine)));

            // DIMSD2
            list.Add(new DxfCodePair(9, DIMSD2));
            list.Add(new DxfCodePair(70, BoolShort(header.SuppressSecondDimensionExtensionLine)));

            // DIMSE1
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMSE1));
                list.Add(new DxfCodePair(70, BoolShort(header.SuppressFirstDimensionExtensionLine)));
            }

            // DIMSE2
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMSE2));
                list.Add(new DxfCodePair(70, BoolShort(header.SuppressSecondDimensionExtensionLine)));
            }

            // DIMSHO
            list.Add(new DxfCodePair(9, DIMSHO));
            list.Add(new DxfCodePair(70, BoolShort(header.RecomputeDimensionsWhileDragging)));

            // DIMSOXD
            list.Add(new DxfCodePair(9, DIMSOXD));
            list.Add(new DxfCodePair(70, BoolShort(header.SuppressOutsideExtensionDimensionLines)));

            // DIMSTYLE
            list.Add(new DxfCodePair(9, DIMSTYLE));
            list.Add(new DxfCodePair(2, (header.DimensionStyleName)));

            // DIMTAD
            list.Add(new DxfCodePair(9, DIMTAD));
            list.Add(new DxfCodePair(70, BoolShort(header.TextAboveDimensionLine)));

            // DIMTDEC
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMTDEC));
                list.Add(new DxfCodePair(70, (header.DimensionToleranceDecimalPlaces)));
            }

            // DIMTFAC
            if (version >= DxfAcadVersion.R12)
            {
                list.Add(new DxfCodePair(9, DIMTFAC));
                list.Add(new DxfCodePair(40, (header.DimensionToleranceDisplayScaleFactor)));
            }

            // DIMTIH
            list.Add(new DxfCodePair(9, DIMTIH));
            list.Add(new DxfCodePair(70, BoolShort(header.DimensionTextInsideHorizontal)));

            // DIMTIX
            list.Add(new DxfCodePair(9, DIMTIX));
            list.Add(new DxfCodePair(70, BoolShort(header.ForceDimensionTextInsideExtensions)));

            // DIMTM
            list.Add(new DxfCodePair(9, DIMTM));
            list.Add(new DxfCodePair(40, (header.DimensionMinusTolerance)));

            // DIMTMOVE
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, DIMTMOVE));
                list.Add(new DxfCodePair(70, (short)(header.DimensionTextMovementRule)));
            }

            // DIMTOFL
            list.Add(new DxfCodePair(9, DIMTOFL));
            list.Add(new DxfCodePair(70, BoolShort(header.ForceDimensionLineExtensionsOutsideIfTextIs)));

            // DIMTOH
            list.Add(new DxfCodePair(9, DIMTOH));
            list.Add(new DxfCodePair(70, BoolShort(header.DimensionTextOutsideHorizontal)));

            // DIMTOL
            list.Add(new DxfCodePair(9, DIMTOL));
            list.Add(new DxfCodePair(70, BoolShort(header.GenerateDimensionTolerances)));

            // DIMTOLJ
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMTOLJ));
                list.Add(new DxfCodePair(70, (short)(header.DimensionToleranceVerticalJustification)));
            }

            // DIMTP
            list.Add(new DxfCodePair(9, DIMTP));
            list.Add(new DxfCodePair(40, (header.DimensionPlusTolerance)));

            // DIMTSZ
            list.Add(new DxfCodePair(9, DIMTSZ));
            list.Add(new DxfCodePair(40, (header.DimensioningTickSize)));

            // DIMTVP
            list.Add(new DxfCodePair(9, DIMTVP));
            list.Add(new DxfCodePair(40, (header.DimensionVerticalTextPosition)));

            // DIMTXSTY
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMTXSTY));
                list.Add(new DxfCodePair(7, (header.DimensionTextStyle)));
            }

            // DIMTXT
            list.Add(new DxfCodePair(9, DIMTXT));
            list.Add(new DxfCodePair(40, (header.DimensioningTextHeight)));

            // DIMTZIN
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMTZIN));
                list.Add(new DxfCodePair(70, (short)(header.DimensionToleranceZeroSuppression)));
            }

            // DIMUNIT
            if (version >= DxfAcadVersion.R13 && version <= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, DIMUNIT));
                list.Add(new DxfCodePair(70, (short)(header.DimensionUnitFormat)));
            }

            // DIMUPT
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DIMUPT));
                list.Add(new DxfCodePair(70, BoolShort(header.DimensionCursorControlsTextPosition)));
            }

            // DIMZIN
            list.Add(new DxfCodePair(9, DIMZIN));
            list.Add(new DxfCodePair(70, (short)(header.DimensionUnitZeroSuppression)));

            // DISPSILH
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DISPSILH));
                list.Add(new DxfCodePair(70, BoolShort(header.DisplaySilhouetteCurvesInWireframeMode)));
            }

            // DRAGMODE
            if (version <= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, DRAGMODE));
                list.Add(new DxfCodePair(70, (short)(header.DragMode)));
            }

            // DRAGVS
            if (version >= DxfAcadVersion.R2007)
            {
                list.Add(new DxfCodePair(9, DRAGVS));
                list.Add(new DxfCodePair(349, (header.ThreeDSolidCreationVisualStyle)));
            }

            // DWGCODEPAGE
            if (version == DxfAcadVersion.R12)
            {
                list.Add(new DxfCodePair(9, DWGCODEPAGE));
                list.Add(new DxfCodePair(70, StringShort(header.DrawingCodePage)));
            }

            // DWGCODEPAGE
            if (version >= DxfAcadVersion.R13)
            {
                list.Add(new DxfCodePair(9, DWGCODEPAGE));
                list.Add(new DxfCodePair(3, (header.DrawingCodePage)));
            }

            // ELEVATION
            list.Add(new DxfCodePair(9, ELEVATION));
            list.Add(new DxfCodePair(40, (header.Elevation)));

            // ENDCAPS
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, ENDCAPS));
                list.Add(new DxfCodePair(280, (short)(header.EndCapSetting)));
            }

            // EXTMAX
            list.Add(new DxfCodePair(9, EXTMAX));
            list.Add(new DxfCodePair(10, header.MaximumDrawingExtents?.X ?? default(double)));
            list.Add(new DxfCodePair(20, header.MaximumDrawingExtents?.Y ?? default(double)));
            list.Add(new DxfCodePair(30, header.MaximumDrawingExtents?.Z ?? default(double)));

            // EXTMIN
            list.Add(new DxfCodePair(9, EXTMIN));
            list.Add(new DxfCodePair(10, header.MinimumDrawingExtents?.X ?? default(double)));
            list.Add(new DxfCodePair(20, header.MinimumDrawingExtents?.Y ?? default(double)));
            list.Add(new DxfCodePair(30, header.MinimumDrawingExtents?.Z ?? default(double)));

            // EXTNAMES
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, EXTNAMES));
                list.Add(new DxfCodePair(290, (header.UseACad2000SymbolTableNaming)));
            }

            // FILLETRAD
            list.Add(new DxfCodePair(9, FILLETRAD));
            list.Add(new DxfCodePair(40, (header.FilletRadius)));

            // FILLMODE
            list.Add(new DxfCodePair(9, FILLMODE));
            list.Add(new DxfCodePair(70, BoolShort(header.FillModeOn)));

            // FINGERPRINTGUID
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, FINGERPRINTGUID));
                list.Add(new DxfCodePair(2, GuidString(header.FingerprintGuid)));
            }

            // HALOGAP
            if (version >= DxfAcadVersion.R2004)
            {
                list.Add(new DxfCodePair(9, HALOGAP));
                list.Add(new DxfCodePair(280, (short)(header.HaloGapPercent)));
            }

            // HANDLING
            if (version <= DxfAcadVersion.R12)
            {
                list.Add(new DxfCodePair(9, HANDLING));
                list.Add(new DxfCodePair(70, BoolShort(header.HandlesEnabled)));
            }

            // HANDSEED
            list.Add(new DxfCodePair(9, HANDSEED));
            list.Add(new DxfCodePair(5, UIntHandle(header.NextAvailableHandle)));

            // HIDETEXT
            if (version >= DxfAcadVersion.R2004)
            {
                list.Add(new DxfCodePair(9, HIDETEXT));
                list.Add(new DxfCodePair(290, (header.HideTextObjectsWhenProducintHiddenView)));
            }

            // HYPERLINKBASE
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, HYPERLINKBASE));
                list.Add(new DxfCodePair(1, (header.HyperlinBase)));
            }

            // INDEXCTL
            if (version >= DxfAcadVersion.R2004)
            {
                list.Add(new DxfCodePair(9, INDEXCTL));
                list.Add(new DxfCodePair(280, (short)(header.LayerAndSpatialIndexSaveMode)));
            }

            // INSBASE
            list.Add(new DxfCodePair(9, INSBASE));
            list.Add(new DxfCodePair(10, header.InsertionBase?.X ?? default(double)));
            list.Add(new DxfCodePair(20, header.InsertionBase?.Y ?? default(double)));
            list.Add(new DxfCodePair(30, header.InsertionBase?.Z ?? default(double)));

            // INSUNITS
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, INSUNITS));
                list.Add(new DxfCodePair(70, (short)(header.DefaultDrawingUnits)));
            }

            // INTERFERECOLOR
            if (version >= DxfAcadVersion.R2007)
            {
                list.Add(new DxfCodePair(9, INTERFERECOLOR));
                list.Add(new DxfCodePair(62, DxfColor.GetRawValue(header.InterferenceObjectColor)));
            }

            // INTERFEREOBJVS
            if (version >= DxfAcadVersion.R2007)
            {
                list.Add(new DxfCodePair(9, INTERFEREOBJVS));
                list.Add(new DxfCodePair(345, (header.InterferenceObjectVisualStylePointer)));
            }

            // INTERFEREVPVS
            if (version >= DxfAcadVersion.R2007)
            {
                list.Add(new DxfCodePair(9, INTERFEREVPVS));
                list.Add(new DxfCodePair(346, (header.InterferenceViewPortVisualStylePointer)));
            }

            // INTERSECTIONCOLOR
            if (version >= DxfAcadVersion.R2004)
            {
                list.Add(new DxfCodePair(9, INTERSECTIONCOLOR));
                list.Add(new DxfCodePair(70, DxfColor.GetRawValue(header.IntersectionPolylineColor)));
            }

            // INTERSECTIONDISPLAY
            if (version >= DxfAcadVersion.R2004)
            {
                list.Add(new DxfCodePair(9, INTERSECTIONDISPLAY));
                list.Add(new DxfCodePair(290, (header.DisplayIntersectionPolylines)));
            }

            // JOINSTYLE
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, JOINSTYLE));
                list.Add(new DxfCodePair(280, (short)(header.LineweightJointSetting)));
            }

            // LIMCHECK
            list.Add(new DxfCodePair(9, LIMCHECK));
            list.Add(new DxfCodePair(70, BoolShort(header.UseLimitsChecking)));

            // LIMMAX
            list.Add(new DxfCodePair(9, LIMMAX));
            list.Add(new DxfCodePair(10, header.MaximumDrawingLimits?.X ?? default(double)));
            list.Add(new DxfCodePair(20, header.MaximumDrawingLimits?.Y ?? default(double)));

            // LIMMIN
            list.Add(new DxfCodePair(9, LIMMIN));
            list.Add(new DxfCodePair(10, header.MinimumDrawingLimits?.X ?? default(double)));
            list.Add(new DxfCodePair(20, header.MinimumDrawingLimits?.Y ?? default(double)));

            // LTSCALE
            list.Add(new DxfCodePair(9, LTSCALE));
            list.Add(new DxfCodePair(40, (header.LinetypeScale)));

            // LUNITS
            list.Add(new DxfCodePair(9, LUNITS));
            list.Add(new DxfCodePair(70, (short)(header.UnitFormat)));

            // LUPREC
            list.Add(new DxfCodePair(9, LUPREC));
            list.Add(new DxfCodePair(70, (header.UnitPrecision)));

            // LWDISPLAY
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, LWDISPLAY));
                list.Add(new DxfCodePair(290, (header.DisplayLinewieghtInModelAndLayoutTab)));
            }

            // MAXACTVP
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, MAXACTVP));
                list.Add(new DxfCodePair(70, (header.MaximumActiveViewports)));
            }

            // MEASUREMENT
            if (version >= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, MEASUREMENT));
                list.Add(new DxfCodePair(70, (short)(header.DrawingUnits)));
            }

            // MENU
            list.Add(new DxfCodePair(9, MENU));
            list.Add(new DxfCodePair(1, (header.FileName)));

            // MIRRTEXT
            list.Add(new DxfCodePair(9, MIRRTEXT));
            list.Add(new DxfCodePair(70, BoolShort(header.MirrorText)));

            // OBSCOLOR
            if (version >= DxfAcadVersion.R2004)
            {
                list.Add(new DxfCodePair(9, OBSCOLOR));
                list.Add(new DxfCodePair(70, DxfColor.GetRawValue(header.ObscuredLineColor)));
            }

            // OBSLTYPE
            if (version >= DxfAcadVersion.R2004)
            {
                list.Add(new DxfCodePair(9, OBSLTYPE));
                list.Add(new DxfCodePair(280, (short)(header.ObscuredLineTypeStyle)));
            }

            // ORTHOMODE
            list.Add(new DxfCodePair(9, ORTHOMODE));
            list.Add(new DxfCodePair(70, BoolShort(header.DrawOrthoganalLines)));

            // OSMODE
            if (version <= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, OSMODE));
                list.Add(new DxfCodePair(70, (short)(header.ObjectSnapFlags)));
            }

            // PDMODE
            list.Add(new DxfCodePair(9, PDMODE));
            list.Add(new DxfCodePair(70, (short)(header.PointDisplayMode)));

            // PDSIZE
            list.Add(new DxfCodePair(9, PDSIZE));
            list.Add(new DxfCodePair(40, (header.PointDisplaySize)));

            // PELEVATION
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, PELEVATION));
                list.Add(new DxfCodePair(40, (header.PaperspaceElevation)));
            }

            // PEXTMAX
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, PEXTMAX));
                list.Add(new DxfCodePair(10, header.PaperspaceMaximumDrawingExtents?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceMaximumDrawingExtents?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.PaperspaceMaximumDrawingExtents?.Z ?? default(double)));
            }

            // PEXTMIN
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, PEXTMIN));
                list.Add(new DxfCodePair(10, header.PaperspaceMinimumDrawingExtents?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceMinimumDrawingExtents?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.PaperspaceMinimumDrawingExtents?.Z ?? default(double)));
            }

            // PICKSTYLE
            if (version >= DxfAcadVersion.R13 && version <= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, PICKSTYLE));
                list.Add(new DxfCodePair(70, (short)(header.PickStyle)));
            }

            // PINSBASE
            if (version >= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, PINSBASE));
                list.Add(new DxfCodePair(10, header.PaperspaceInsertionBase?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceInsertionBase?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.PaperspaceInsertionBase?.Z ?? default(double)));
            }

            // PLIMCHECK
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, PLIMCHECK));
                list.Add(new DxfCodePair(70, BoolShort(header.LimitCheckingInPaperspace)));
            }

            // PLIMMAX
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, PLIMMAX));
                list.Add(new DxfCodePair(10, header.PaperspaceMaximumDrawingLimits?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceMaximumDrawingLimits?.Y ?? default(double)));
            }

            // PLIMMIN
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, PLIMMIN));
                list.Add(new DxfCodePair(10, header.PaperspaceMinimumDrawingLimits?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceMinimumDrawingLimits?.Y ?? default(double)));
            }

            // PLINEGEN
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, PLINEGEN));
                list.Add(new DxfCodePair(70, BoolShort(header.IsPolylineContinuousAroundVerticies)));
            }

            // PLINEWID
            list.Add(new DxfCodePair(9, PLINEWID));
            list.Add(new DxfCodePair(40, (header.DefaultPolylineWidth)));

            // PROJECTNAME
            if (version >= DxfAcadVersion.R2004)
            {
                list.Add(new DxfCodePair(9, PROJECTNAME));
                list.Add(new DxfCodePair(1, (header.ProjectName)));
            }

            // PROXYGRAPHICS
            if (version >= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, PROXYGRAPHICS));
                list.Add(new DxfCodePair(70, BoolShort(header.SaveProxyGraphics)));
            }

            // PSLTSCALE
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, PSLTSCALE));
                list.Add(new DxfCodePair(70, BoolShort(header.ScaleLinetypesInPaperspace)));
            }

            // PSTYLEMODE
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, PSTYLEMODE));
                list.Add(new DxfCodePair(290, (header.UsesColorDependentPlotStyleTables)));
            }

            // PSVPSCALE
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, PSVPSCALE));
                list.Add(new DxfCodePair(40, (header.ViewportViewScaleFactor)));
            }

            // PUCSBASE
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, PUCSBASE));
                list.Add(new DxfCodePair(2, (header.PaperspaceUCSDefinitionName)));
            }

            // PUCSNAME
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, PUCSNAME));
                list.Add(new DxfCodePair(2, (header.PaperspaceUCSName)));
            }

            // PUCSORG
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, PUCSORG));
                list.Add(new DxfCodePair(10, header.PaperspaceUCSOrigin?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceUCSOrigin?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.PaperspaceUCSOrigin?.Z ?? default(double)));
            }

            // PUCSORGBACK
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, PUCSORGBACK));
                list.Add(new DxfCodePair(10, header.PaperspaceUCSOriginBack?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceUCSOriginBack?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.PaperspaceUCSOriginBack?.Z ?? default(double)));
            }

            // PUCSORGBOTTOM
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, PUCSORGBOTTOM));
                list.Add(new DxfCodePair(10, header.PaperspaceUCSOriginBottom?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceUCSOriginBottom?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.PaperspaceUCSOriginBottom?.Z ?? default(double)));
            }

            // PUCSORGFRONT
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, PUCSORGFRONT));
                list.Add(new DxfCodePair(10, header.PaperspaceUCSOriginFront?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceUCSOriginFront?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.PaperspaceUCSOriginFront?.Z ?? default(double)));
            }

            // PUCSORGLEFT
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, PUCSORGLEFT));
                list.Add(new DxfCodePair(10, header.PaperspaceUCSOriginLeft?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceUCSOriginLeft?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.PaperspaceUCSOriginLeft?.Z ?? default(double)));
            }

            // PUCSORGRIGHT
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, PUCSORGRIGHT));
                list.Add(new DxfCodePair(10, header.PaperspaceUCSOriginRight?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceUCSOriginRight?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.PaperspaceUCSOriginRight?.Z ?? default(double)));
            }

            // PUCSORGTOP
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, PUCSORGTOP));
                list.Add(new DxfCodePair(10, header.PaperspaceUCSOriginTop?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceUCSOriginTop?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.PaperspaceUCSOriginTop?.Z ?? default(double)));
            }

            // PUCSORTHOREF
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, PUCSORTHOREF));
                list.Add(new DxfCodePair(2, (header.PaperspaceOrthoUCSReference)));
            }

            // PUCSORTHOVIEW
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, PUCSORTHOVIEW));
                list.Add(new DxfCodePair(70, (short)(header.PaperspaceOrthographicViewType)));
            }

            // PUCSXDIR
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, PUCSXDIR));
                list.Add(new DxfCodePair(10, header.PaperspaceXAxis?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceXAxis?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.PaperspaceXAxis?.Z ?? default(double)));
            }

            // PUCSYDIR
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, PUCSYDIR));
                list.Add(new DxfCodePair(10, header.PaperspaceYAxis?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.PaperspaceYAxis?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.PaperspaceYAxis?.Z ?? default(double)));
            }

            // QTEXTMODE
            list.Add(new DxfCodePair(9, QTEXTMODE));
            list.Add(new DxfCodePair(70, BoolShort(header.UseQuickTextMode)));

            // REGENMODE
            list.Add(new DxfCodePair(9, REGENMODE));
            list.Add(new DxfCodePair(70, BoolShort(header.UseRegenMode)));

            // SHADEDGE
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, SHADEDGE));
                list.Add(new DxfCodePair(70, (short)(header.EdgeShading)));
            }

            // SHADEDIF
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, SHADEDIF));
                list.Add(new DxfCodePair(70, (header.PercentAmbientToDiffuse)));
            }

            // SHADOWPLANELOCATION
            if (version >= DxfAcadVersion.R2007)
            {
                list.Add(new DxfCodePair(9, SHADOWPLANELOCATION));
                list.Add(new DxfCodePair(40, (header.ShadowPlaneZOffset)));
            }

            // SKETCHINC
            list.Add(new DxfCodePair(9, SKETCHINC));
            list.Add(new DxfCodePair(40, (header.SketchRecordIncrement)));

            // SKPOLY
            list.Add(new DxfCodePair(9, SKPOLY));
            list.Add(new DxfCodePair(70, (short)(header.PolylineSketchMode)));

            // SORTENTS
            if (version >= DxfAcadVersion.R2004)
            {
                list.Add(new DxfCodePair(9, SORTENTS));
                list.Add(new DxfCodePair(280, (short)(header.ObjectSortingMethodsFlags)));
            }

            // SPLFRAME
            if (version <= DxfAcadVersion.R2010)
            {
                list.Add(new DxfCodePair(9, SPLFRAME));
                list.Add(new DxfCodePair(70, BoolShort(header.DisplaySplinePolygonControl)));
            }

            // SPLINESEGS
            list.Add(new DxfCodePair(9, SPLINESEGS));
            list.Add(new DxfCodePair(70, (header.LineSegmentsPerSplinePatch)));

            // SPLINETYPE
            list.Add(new DxfCodePair(9, SPLINETYPE));
            list.Add(new DxfCodePair(70, (short)(header.PEditSplineCurveType)));

            // SURFTAB1
            list.Add(new DxfCodePair(9, SURFTAB1));
            list.Add(new DxfCodePair(70, (header.MeshTabulationsInFirstDirection)));

            // SURFTAB2
            list.Add(new DxfCodePair(9, SURFTAB2));
            list.Add(new DxfCodePair(70, (header.MeshTabulationsInSecondDirection)));

            // SURFTYPE
            list.Add(new DxfCodePair(9, SURFTYPE));
            list.Add(new DxfCodePair(70, (short)(header.PEditSmoothSurfaceType)));

            // SURFU
            list.Add(new DxfCodePair(9, SURFU));
            list.Add(new DxfCodePair(70, (header.PEditSmoothMDensith)));

            // SURFV
            list.Add(new DxfCodePair(9, SURFV));
            list.Add(new DxfCodePair(70, (header.PEditSmoothNDensith)));

            // TDCREATE
            list.Add(new DxfCodePair(9, TDCREATE));
            list.Add(new DxfCodePair(40, DateDouble(header.CreationDate)));

            // TDINDWG
            list.Add(new DxfCodePair(9, TDINDWG));
            list.Add(new DxfCodePair(40, TimeSpanDouble(header.TimeInDrawing)));

            // TDUCREATE
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, TDUCREATE));
                list.Add(new DxfCodePair(40, DateDouble(header.CreationDateUniversal)));
            }

            // TDUPDATE
            list.Add(new DxfCodePair(9, TDUPDATE));
            list.Add(new DxfCodePair(40, DateDouble(header.UpdateDate)));

            // TDUSRTIMER
            list.Add(new DxfCodePair(9, TDUSRTIMER));
            list.Add(new DxfCodePair(40, TimeSpanDouble(header.UserElapsedTimer)));

            // TDUUPDATE
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, TDUUPDATE));
                list.Add(new DxfCodePair(40, DateDouble(header.UpdateDateUniversal)));
            }

            // TEXTSIZE
            list.Add(new DxfCodePair(9, TEXTSIZE));
            list.Add(new DxfCodePair(40, (header.DefaultTextHeight)));

            // TEXTSTYLE
            list.Add(new DxfCodePair(9, TEXTSTYLE));
            list.Add(new DxfCodePair(7, (header.TextStyle)));

            // THICKNESS
            list.Add(new DxfCodePair(9, THICKNESS));
            list.Add(new DxfCodePair(40, (header.Thickness)));

            // TILEMODE
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, TILEMODE));
                list.Add(new DxfCodePair(70, BoolShort(header.PreviousReleaseTileCompatability)));
            }

            // TRACEWID
            list.Add(new DxfCodePair(9, TRACEWID));
            list.Add(new DxfCodePair(40, (header.TraceWidth)));

            // TREEDEPTH
            if (version >= DxfAcadVersion.R14)
            {
                list.Add(new DxfCodePair(9, TREEDEPTH));
                list.Add(new DxfCodePair(70, (header.SpacialIndexMaxDepth)));
            }

            // UCSBASE
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, UCSBASE));
                list.Add(new DxfCodePair(2, (header.UCSDefinitionName)));
            }

            // UCSNAME
            if (version <= DxfAcadVersion.R10)
            {
                list.Add(new DxfCodePair(9, UCSNAME));
                list.Add(new DxfCodePair(1, (header.UCSName)));
            }

            // UCSNAME
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, UCSNAME));
                list.Add(new DxfCodePair(2, (header.UCSName)));
            }

            // UCSORG
            list.Add(new DxfCodePair(9, UCSORG));
            list.Add(new DxfCodePair(10, header.UCSOrigin?.X ?? default(double)));
            list.Add(new DxfCodePair(20, header.UCSOrigin?.Y ?? default(double)));
            list.Add(new DxfCodePair(30, header.UCSOrigin?.Z ?? default(double)));

            // UCSORGBACK
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, UCSORGBACK));
                list.Add(new DxfCodePair(10, header.UCSOriginBack?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.UCSOriginBack?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.UCSOriginBack?.Z ?? default(double)));
            }

            // UCSORGBOTTOM
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, UCSORGBOTTOM));
                list.Add(new DxfCodePair(10, header.UCSOriginBottom?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.UCSOriginBottom?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.UCSOriginBottom?.Z ?? default(double)));
            }

            // UCSORGFRONT
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, UCSORGFRONT));
                list.Add(new DxfCodePair(10, header.UCSOriginFront?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.UCSOriginFront?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.UCSOriginFront?.Z ?? default(double)));
            }

            // UCSORGLEFT
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, UCSORGLEFT));
                list.Add(new DxfCodePair(10, header.UCSOriginLeft?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.UCSOriginLeft?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.UCSOriginLeft?.Z ?? default(double)));
            }

            // UCSORGRIGHT
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, UCSORGRIGHT));
                list.Add(new DxfCodePair(10, header.UCSOriginRight?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.UCSOriginRight?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.UCSOriginRight?.Z ?? default(double)));
            }

            // UCSORGTOP
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, UCSORGTOP));
                list.Add(new DxfCodePair(10, header.UCSOriginTop?.X ?? default(double)));
                list.Add(new DxfCodePair(20, header.UCSOriginTop?.Y ?? default(double)));
                list.Add(new DxfCodePair(30, header.UCSOriginTop?.Z ?? default(double)));
            }

            // UCSORTHOREF
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, UCSORTHOREF));
                list.Add(new DxfCodePair(2, (header.OrthoUCSReference)));
            }

            // UCSORTHOVIEW
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, UCSORTHOVIEW));
                list.Add(new DxfCodePair(70, (short)(header.OrthgraphicViewType)));
            }

            // UCSXDIR
            list.Add(new DxfCodePair(9, UCSXDIR));
            list.Add(new DxfCodePair(10, header.UCSXAxis?.X ?? default(double)));
            list.Add(new DxfCodePair(20, header.UCSXAxis?.Y ?? default(double)));
            list.Add(new DxfCodePair(30, header.UCSXAxis?.Z ?? default(double)));

            // UCSYDIR
            list.Add(new DxfCodePair(9, UCSYDIR));
            list.Add(new DxfCodePair(10, header.UCSYAxis?.X ?? default(double)));
            list.Add(new DxfCodePair(20, header.UCSYAxis?.Y ?? default(double)));
            list.Add(new DxfCodePair(30, header.UCSYAxis?.Z ?? default(double)));

            // UNITMODE
            if (version >= DxfAcadVersion.R11)
            {
                list.Add(new DxfCodePair(9, UNITMODE));
                list.Add(new DxfCodePair(70, BoolShort(header.DisplayFractionsInInput)));
            }

            // USERI1
            list.Add(new DxfCodePair(9, USERI1));
            list.Add(new DxfCodePair(70, (header.UserInt1)));

            // USERI2
            list.Add(new DxfCodePair(9, USERI2));
            list.Add(new DxfCodePair(70, (header.UserInt2)));

            // USERI3
            list.Add(new DxfCodePair(9, USERI3));
            list.Add(new DxfCodePair(70, (header.UserInt3)));

            // USERI4
            list.Add(new DxfCodePair(9, USERI4));
            list.Add(new DxfCodePair(70, (header.UserInt4)));

            // USERI5
            list.Add(new DxfCodePair(9, USERI5));
            list.Add(new DxfCodePair(70, (header.UserInt5)));

            // USERR1
            list.Add(new DxfCodePair(9, USERR1));
            list.Add(new DxfCodePair(40, (header.UserReal1)));

            // USERR2
            list.Add(new DxfCodePair(9, USERR2));
            list.Add(new DxfCodePair(40, (header.UserReal2)));

            // USERR3
            list.Add(new DxfCodePair(9, USERR3));
            list.Add(new DxfCodePair(40, (header.UserReal3)));

            // USERR4
            list.Add(new DxfCodePair(9, USERR4));
            list.Add(new DxfCodePair(40, (header.UserReal4)));

            // USERR5
            list.Add(new DxfCodePair(9, USERR5));
            list.Add(new DxfCodePair(40, (header.UserReal5)));

            // USRTIMER
            list.Add(new DxfCodePair(9, USRTIMER));
            list.Add(new DxfCodePair(70, BoolShort(header.UserTimerOn)));

            // VERSIONGUID
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, VERSIONGUID));
                list.Add(new DxfCodePair(2, GuidString(header.VersionGuid)));
            }

            // VISRETAIN
            if (version >= DxfAcadVersion.R12)
            {
                list.Add(new DxfCodePair(9, VISRETAIN));
                list.Add(new DxfCodePair(70, BoolShort(header.RetainXRefDependentVisibilitySettings)));
            }

            // WORLDVIEW
            list.Add(new DxfCodePair(9, WORLDVIEW));
            list.Add(new DxfCodePair(70, BoolShort(header.SetUCSToWCSInDViewOrVPoint)));

            // XCLIPFRAME
            if (version >= DxfAcadVersion.R2004)
            {
                list.Add(new DxfCodePair(9, XCLIPFRAME));
                list.Add(new DxfCodePair(290, (header.IsXRefClippingBoundaryVisible)));
            }

            // XEDIT
            if (version >= DxfAcadVersion.R2000)
            {
                list.Add(new DxfCodePair(9, XEDIT));
                list.Add(new DxfCodePair(290, (header.CanUseInPlaceReferenceEditing)));
            }
        }