<Spec xmlns="http://IxMilia.com/Dxf/HeaderVariablesSpec">
<Variable Name="ACADVER" Code="1" Type="AcadVersion" Field="version" DefaultValue="AcadVersion::R12" ReadConverter="AcadVersion::from_safe({})" WriteConverter="&{}.to_string()" Comment="The AutoCAD drawing database version number." />
<!-- according to the spec $ACADMAINTVER should be code 70, but occasionally code 90 is encountered in the wild -->
<Variable Name="ACADMAINTVER" Code="70" Type="i16" Field="maintenance_version" DefaultValue="0" MinVersion="R14" Comment="Maintenance version number (should be ignored)." />
<Variable Name="ACADMAINTVER" Code="90" Type="i16" Field="maintenance_version" DefaultValue="0" ReadConverter="{} as i16" SuppressWriting="true" Comment="Maintenance version number (should be ignored)." />
<Variable Name="DWGCODEPAGE" Code="3" Type="String" Field="drawing_code_page" DefaultValue="String::from("ANSI_1252")" WriteConverter="&{}" MinVersion="R13" Comment="Drawing code page; set to the system code page when a new drawing is created, but not otherwise maintained by AutoCAD." />
<Variable Name="LASTSAVEDBY" Code="1" Type="String" Field="last_saved_by" DefaultValue="String::new()" WriteConverter="&{}" MinVersion="R2004" Comment="Name of the last user to modify the file." />
<Variable Name="REQUIREDVERSIONS" Code="160" Type="i64" Field="required_versions" DefaultValue="0" MinVersion="R2013" Comment="Unknown." />
<Variable Name="INSBASE" Code="-3" Type="Point" Field="insertion_base" DefaultValue="Point::origin()" Comment="Insertion base set by BASE command (in WCS)." />
<Variable Name="EXTMIN" Code="-3" Type="Point" Field="minimum_drawing_extents" DefaultValue="Point::origin()" Comment="X, Y, and Z drawing extents lower-left corner (in WCS)." />
<Variable Name="EXTMAX" Code="-3" Type="Point" Field="maximum_drawing_extents" DefaultValue="Point::origin()" Comment="X, Y, and Z drawing extents upper-right corner (in WCS)." />
<Variable Name="LIMMIN" Code="-2" Type="Point" Field="minimum_drawing_limits" DefaultValue="Point::origin()" Comment="XY drawing limits lower-left corner (in WCS)." />
<Variable Name="LIMMAX" Code="-2" Type="Point" Field="maximum_drawing_limits" DefaultValue="Point::new(12.0, 9.0, 0.0)" Comment="XY drawing limits upper-right corner (in WCS)." />
<Variable Name="ORTHOMODE" Code="70" Type="bool" Field="draw_orthogonal_lines" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Ortho mode on." />
<Variable Name="REGENMODE" Code="70" Type="bool" Field="use_regen_mode" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="REGENAUTO mode on." />
<Variable Name="FILLMODE" Code="70" Type="bool" Field="fill_mode_on" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Fill mode on." />
<Variable Name="QTEXTMODE" Code="70" Type="bool" Field="use_quick_text_mode" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Quick text mode on." />
<Variable Name="MIRRTEXT" Code="70" Type="bool" Field="mirror_text" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Mirror text." />
<Variable Name="DRAGMODE" Code="70" Type="DragMode" Field="drag_mode" DefaultValue="DragMode::Auto" ReadConverter="enum_from_number!(DragMode, Auto, from_i16, {})" WriteConverter="{} as i16" MaxVersion="R14" Comment="Controls the way dragged objects are displayed." />
<Variable Name="LTSCALE" Code="40" Type="f64" Field="line_type_scale" DefaultValue="1.0" Comment="Global line type scale." />
<Variable Name="OSMODE" Code="70" Type="i32" Field="object_snap_flags" DefaultValue="37" ReadConverter="i32::from({})" WriteConverter="{} as i16" MaxVersion="R14" Comment="Running object snap modes.">
<Flag Name="end_point_snap" Mask="1" Comment="Snap to line segment endpoints." />
<Flag Name="mid_point_snap" Mask="2" Comment="Snap to line segment midpoints." />
<Flag Name="center_snap" Mask="4" Comment="Snap to circle and arc center points." />
<Flag Name="node_snap" Mask="8" Comment="Snap to nodes." />
<Flag Name="quadrant_snap" Mask="16" Comment="Snap to circle quadrants." />
<Flag Name="intersection_snap" Mask="32" Comment="Snap to segment intersections." />
<Flag Name="insertion_snap" Mask="64" Comment="Snap to block insertion points." />
<Flag Name="perpendicular_snap" Mask="128" Comment="Snap to perpendicular points." />
<Flag Name="tangent_snap" Mask="256" Comment="Snap to tangent points." />
<Flag Name="nearest_snap" Mask="512" Comment="Snap to nearest object points." />
<Flag Name="apparent_intersection_snap" Mask="2048" Comment="Snap to apparent intersection points." />
<Flag Name="extension_snap" Mask="4096" Comment="Snap to extension points." />
<Flag Name="parallel_snap" Mask="8192" Comment="Snap to parallel points." />
</Variable>
<Variable Name="ATTMODE" Code="70" Type="AttributeVisibility" Field="attribute_visibility" DefaultValue="AttributeVisibility::Normal" ReadConverter="enum_from_number!(AttributeVisibility, Normal, from_i16, {})" WriteConverter="{} as i16" Comment="Attribute visibility." />
<Variable Name="TEXTSIZE" Code="40" Type="f64" Field="default_text_height" DefaultValue="0.2" Comment="Default text height." />
<Variable Name="TRACEWID" Code="40" Type="f64" Field="trace_width" DefaultValue="0.05" Comment="Default trace width." />
<Variable Name="TEXTSTYLE" Code="7" Type="String" Field="text_style" DefaultValue="String::from("STANDARD")" WriteConverter="&{}" Comment="Current text style name." />
<Variable Name="CLAYER" Code="8" Type="String" Field="current_layer" DefaultValue="String::from("0")" WriteConverter="&{}" Comment="Current layer name." />
<Variable Name="CELTYPE" Code="6" Type="String" Field="current_entity_line_type" DefaultValue="String::from("BYLAYER")" WriteConverter="&{}" Comment="Entity line type name, or BYBLOCK or BYLAYER." />
<Variable Name="CECOLOR" Code="62" Type="Color" Field="current_entity_color" DefaultValue="Color::by_layer()" ReadConverter="Color::from_raw_value({})" WriteConverter="{}.raw_value()" Comment="Current entity color." />
<Variable Name="CELTSCALE" Code="40" Type="f64" Field="current_entity_line_type_scale" DefaultValue="1.0" MinVersion="R13" Comment="Current entity line type scale." />
<Variable Name="DELOBJ" Code="70" Type="bool" Field="retain_deleted_objects" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R13" MaxVersion="R14" Comment="Controls object deletion." />
<Variable Name="DISPSILH" Code="70" Type="bool" Field="display_silhouette_curves_in_wireframe_mode" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R13" Comment="Controls the display of silhouette curves of body objects in wireframe mode." />
<Variable Name="DRAGVS" Code="349" Type="Handle" Field="solid_visual_style_pointer" DefaultValue="Handle::empty()" ReaderOverride="pair.as_handle()?" WriteConverter="&{}.as_string()" DontWriteDefault="true" MinVersion="R2007" Comment="Hard-pointer to visual style when creating 3D solid primitives." />
<Variable Name="DIMSCALE" Code="40" Type="f64" Field="dimensioning_scale_factor" DefaultValue="1.0" Comment="Overall dimensioning scale factor." />
<Variable Name="DIMASZ" Code="40" Type="f64" Field="dimensioning_arrow_size" DefaultValue="0.18" Comment="Dimensioning arrow size." />
<Variable Name="DIMEXO" Code="40" Type="f64" Field="dimension_extension_line_offset" DefaultValue="0.0625" Comment="Extension line offset." />
<!-- The spec says that DIMFAC should exist, but the Teigha libraries don't like it. -->
<Variable Name="DIMDLI" Code="40" Type="f64" Field="dimension_line_increment" DefaultValue="0.38" Comment="Dimension line increment." />
<Variable Name="DIMRND" Code="40" Type="f64" Field="dimension_distance_rounding_value" DefaultValue="0.0" Comment="Rounding value for dimension distances." />
<Variable Name="DIMDLE" Code="40" Type="f64" Field="dimension_line_extension" DefaultValue="0.0" Comment="Dimension line extension." />
<Variable Name="DIMEXE" Code="40" Type="f64" Field="dimension_extension_line_extension" DefaultValue="0.18" Comment="Extension line extension." />
<Variable Name="DIMTP" Code="40" Type="f64" Field="dimension_plus_tolerance" DefaultValue="0.0" Comment="Plus tolerance." />
<Variable Name="DIMTM" Code="40" Type="f64" Field="dimension_minus_tolerance" DefaultValue="0.0" Comment="Minus tolerance." />
<Variable Name="DIMTXT" Code="40" Type="f64" Field="dimensioning_text_height" DefaultValue="0.18" Comment="Dimensioning text height." />
<Variable Name="DIMCEN" Code="40" Type="f64" Field="center_mark_size" DefaultValue="0.09" Comment="Size of center mark/lines." />
<Variable Name="DIMTSZ" Code="40" Type="f64" Field="dimensioning_tick_size" DefaultValue="0.0" Comment="Dimensioning tick size." />
<Variable Name="DIMTOL" Code="70" Type="bool" Field="generate_dimension_tolerances" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Dimension tolerances generated." />
<Variable Name="DIMLIM" Code="70" Type="bool" Field="generate_dimension_limits" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Dimension limits generated." />
<Variable Name="DIMTIH" Code="70" Type="bool" Field="dimension_text_inside_horizontal" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Text inside horizontal." />
<Variable Name="DIMTOH" Code="70" Type="bool" Field="dimension_text_outside_horizontal" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Text outside horizontal." />
<!-- DIMSE1 and DIMSE2 appear to be identical to DIMSD1 and DIMSD2 -->
<Variable Name="DIMSE1" Code="70" Type="bool" Field="suppress_first_dimension_extension_line" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R12" Comment="Suppression of first extension line." />
<Variable Name="DIMSE2" Code="70" Type="bool" Field="suppress_second_dimension_extension_line" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R12" Comment="Suppression of second extension line." />
<Variable Name="DIMTAD" Code="70" Type="bool" Field="text_above_dimension_line" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Text above dimension line." />
<Variable Name="DIMZIN" Code="70" Type="UnitZeroSuppression" Field="dimension_unit_zero_suppression" DefaultValue="UnitZeroSuppression::SuppressZeroFeetAndZeroInches" ReadConverter="enum_from_number!(UnitZeroSuppression, SuppressZeroFeetAndZeroInches, from_i16, {})" WriteConverter="{} as i16" Comment="Controls suppression of zeros for primary unit values." />
<Variable Name="DIMBLK" Code="1" Type="String" Field="arrow_block_name" DefaultValue="String::new()" WriteConverter="&{}" Comment="Arrow block name." />
<Variable Name="DIMASO" Code="70" Type="bool" Field="create_associative_dimensioning" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Controls associative dimensioning." />
<Variable Name="DIMSHO" Code="70" Type="bool" Field="recompute_dimensions_while_dragging" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Recompute dimensions while dragging." />
<Variable Name="DIMPOST" Code="1" Type="String" Field="dimensioning_suffix" DefaultValue="String::new()" WriteConverter="&{}" Comment="General dimensioning suffix." />
<Variable Name="DIMAPOST" Code="1" Type="String" Field="alternate_dimensioning_suffix" DefaultValue="String::new()" WriteConverter="&{}" Comment="Alternate dimensioning suffix." />
<Variable Name="DIMALT" Code="70" Type="bool" Field="use_alternate_dimensioning" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Alternate unit dimensioning performed." />
<Variable Name="DIMALTD" Code="70" Type="i16" Field="alternate_dimensioning_decimal_places" DefaultValue="2" Comment="Alternate unit decimal places." />
<Variable Name="DIMALTF" Code="40" Type="f64" Field="alternate_dimensioning_scale_factor" DefaultValue="25.4" Comment="Alternate unit scale factor." />
<Variable Name="DIMLFAC" Code="40" Type="f64" Field="dimension_linear_measurements_scale_factor" DefaultValue="1.0" Comment="Linear measurements scale factor." />
<Variable Name="DIMTOFL" Code="70" Type="bool" Field="force_dimension_line_extensions_outside_if_text_is" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="If text is outside extensions, force line extensions between extensions." />
<Variable Name="DIMTVP" Code="40" Type="f64" Field="dimension_vertical_text_position" DefaultValue="0.0" Comment="Text vertical position." />
<Variable Name="DIMTIX" Code="70" Type="bool" Field="force_dimension_text_inside_extensions" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Force text inside extensions." />
<Variable Name="DIMSOXD" Code="70" Type="bool" Field="suppress_outside_extension_dimension_lines" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Suppress outside-extensions dimension lines." />
<Variable Name="DIMSAH" Code="70" Type="bool" Field="use_separate_arrow_blocks_for_dimensions" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Use separate arrow blocks." />
<Variable Name="DIMBLK1" Code="1" Type="String" Field="first_arrow_block_name" DefaultValue="String::new()" WriteConverter="&{}" Comment="First arrow block name." />
<Variable Name="DIMBLK2" Code="1" Type="String" Field="second_arrow_block_name" DefaultValue="String::new()" WriteConverter="&{}" Comment="Second arrow block name." />
<Variable Name="DIMSTYLE" Code="2" Type="String" Field="dimension_style_name" DefaultValue="String::from("STANDARD")" WriteConverter="&{}" Comment="Dimension style name." />
<Variable Name="DIMCLRD" Code="70" Type="Color" Field="dimension_line_color" DefaultValue="Color::by_block()" ReadConverter="Color::from_raw_value({})" WriteConverter="{}.raw_value()" MinVersion="R11" Comment="Dimension line color." />
<Variable Name="DIMCLRE" Code="70" Type="Color" Field="dimension_extension_line_color" DefaultValue="Color::by_block()" ReadConverter="Color::from_raw_value({})" WriteConverter="{}.raw_value()" MinVersion="R11" Comment="Dimension extension line color." />
<Variable Name="DIMCLRT" Code="70" Type="Color" Field="dimension_text_color" DefaultValue="Color::by_block()" ReadConverter="Color::from_raw_value({})" WriteConverter="{}.raw_value()" MinVersion="R11" Comment="Dimension text color." />
<Variable Name="DIMTFAC" Code="40" Type="f64" Field="dimension_tolerance_display_scale_factor" DefaultValue="1.0" MinVersion="R12" Comment="Dimension tolerance display factor." />
<Variable Name="DIMGAP" Code="40" Type="f64" Field="dimension_line_gap" DefaultValue="0.09" MinVersion="R11" Comment="Dimension line gap." />
<Variable Name="DIMJUST" Code="70" Type="DimensionTextJustification" Field="dimension_text_justification" DefaultValue="DimensionTextJustification::AboveLineCenter" ReadConverter="enum_from_number!(DimensionTextJustification, AboveLineCenter, from_i16, {})" WriteConverter="{} as i16" MinVersion="R13" Comment="Horizontal dimension text position." />
<Variable Name="DIMSD1" Code="70" Type="bool" Field="suppress_first_dimension_extension_line" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R13" Comment="Suppression of first extension line." />
<Variable Name="DIMSD2" Code="70" Type="bool" Field="suppress_second_dimension_extension_line" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R13" Comment="Suppression of second extension line." />
<Variable Name="DIMTOLJ" Code="70" Type="Justification" Field="dimension_tolerance_vertical_justification" DefaultValue="Justification::Middle" ReadConverter="enum_from_number!(Justification, Middle, from_i16, {})" WriteConverter="{} as i16" MinVersion="R13" Comment="Vertical justification for tolerance values." />
<Variable Name="DIMTZIN" Code="70" Type="UnitZeroSuppression" Field="dimension_tolerance_zero_suppression" DefaultValue="UnitZeroSuppression::SuppressZeroFeetAndZeroInches" ReadConverter="enum_from_number!(UnitZeroSuppression, SuppressZeroFeetAndZeroInches, from_i16, {})" WriteConverter="{} as i16" MinVersion="R13" Comment="Controls suppression of zeros for tolerance values." />
<Variable Name="DIMALTZ" Code="70" Type="UnitZeroSuppression" Field="alternate_dimensioning_zero_supression" DefaultValue="UnitZeroSuppression::SuppressZeroFeetAndZeroInches" ReadConverter="enum_from_number!(UnitZeroSuppression, SuppressZeroFeetAndZeroInches, from_i16, {})" WriteConverter="{} as i16" MinVersion="R13" Comment="Controls suppression of zeros for alternate unit dimension values." />
<Variable Name="DIMALTTZ" Code="70" Type="UnitZeroSuppression" Field="alternate_dimensioning_tolerance_zero_supression" DefaultValue="UnitZeroSuppression::SuppressZeroFeetAndZeroInches" ReadConverter="enum_from_number!(UnitZeroSuppression, SuppressZeroFeetAndZeroInches, from_i16, {})" WriteConverter="{} as i16" MinVersion="R13" Comment="Controls suppression of zeros for alternate tolerance values." />
<Variable Name="DIMFIT" Code="70" Type="DimensionFit" Field="dimension_text_and_arrow_placement" DefaultValue="DimensionFit::TextAndArrowsOutsideLines" ReadConverter="enum_from_number!(DimensionFit, TextAndArrowsOutsideLines, from_i16, {})" WriteConverter="{} as i16" MinVersion="R13" MaxVersion="R14" Comment="Placement of text and arrowheads." />
<Variable Name="DIMUPT" Code="70" Type="bool" Field="dimension_cursor_controls_text_position" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R13" Comment="Cursor functionality for user-positioned text." />
<Variable Name="DIMUNIT" Code="70" Type="UnitFormat" Field="dimension_unit_format" DefaultValue="UnitFormat::Decimal" ReadConverter="enum_from_number!(UnitFormat, Decimal, from_i16, {})" WriteConverter="{} as i16" MinVersion="R13" MaxVersion="R14" Comment="Units format for all dimension style family members except angular." />
<Variable Name="DIMDEC" Code="70" Type="i16" Field="dimension_unit_tolerance_decimal_places" DefaultValue="4" MinVersion="R13" Comment="Number of decimal places for the tolerance values of a primary units dimension." />
<Variable Name="DIMTDEC" Code="70" Type="i16" Field="dimension_tolerance_decimal_places" DefaultValue="4" MinVersion="R13" Comment="Number of decimal places to display the tolerance values." />
<Variable Name="DIMALTU" Code="70" Type="UnitFormat" Field="alternate_dimensioning_units" DefaultValue="UnitFormat::Decimal" ReadConverter="enum_from_number!(UnitFormat, Decimal, from_i16, {})" WriteConverter="{} as i16" MinVersion="R13" Comment="Units format for alternate units of all dimension style family members except angular." />
<Variable Name="DIMALTTD" Code="70" Type="i16" Field="alternate_dimensioning_tolerance_decimal_places" DefaultValue="2" MinVersion="R13" Comment="Number of decimal places for tolerance values of an alternate units dimension." />
<Variable Name="DIMTXSTY" Code="7" Type="String" Field="dimension_text_style" DefaultValue="String::from("STANDARD")" WriteConverter="&{}" MinVersion="R13" Comment="Dimension text style." />
<Variable Name="DIMAUNIT" Code="70" Type="AngleFormat" Field="dimensioning_angle_format" DefaultValue="AngleFormat::DecimalDegrees" ReadConverter="enum_from_number!(AngleFormat, DecimalDegrees, from_i16, {})" WriteConverter="{} as i16" MinVersion="R13" Comment="Angle format for angular dimensions." />
<Variable Name="DIMADEC" Code="70" Type="i16" Field="angular_dimension_precision" DefaultValue="0" MinVersion="R2000" Comment="Number of precision places displayed in angular dimensions." />
<Variable Name="DIMALTRND" Code="40" Type="f64" Field="alternate_dimensioning_unit_rounding" DefaultValue="0.0" MinVersion="R2000" Comment="Determines rounding of alternate units." />
<Variable Name="DIMAZIN" Code="70" Type="UnitZeroSuppression" Field="dimension_angle_zero_suppression" DefaultValue="UnitZeroSuppression::SuppressZeroFeetAndZeroInches" ReadConverter="enum_from_number!(UnitZeroSuppression, SuppressZeroFeetAndZeroInches, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2000" Comment="Controls suppression of zeros for angular dimensions." />
<Variable Name="DIMDSEP" Code="70" Type="char" Field="dimension_decimal_separator_char" DefaultValue="'.'" ReadConverter="{} as u8 as char" WriteConverter="{} as i16" MinVersion="R2000" Comment="Single-character decimal separator used when creating dimensions whose unit format is decimal." />
<Variable Name="DIMATFIT" Code="70" Type="DimensionFit" Field="dimension_text_and_arrow_placement" DefaultValue="DimensionFit::MoveEitherForBestFit" ReadConverter="enum_from_number!(DimensionFit, MoveEitherForBestFit, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2000" Comment="Controls dimension text and arrow placement when space is not sufficient to place both within the extension lines." />
<Variable Name="DIMFRAC" Code="70" Type="DimensionFractionFormat" Field="dimension_text_height_scale_factor" DefaultValue="DimensionFractionFormat::HorizontalStacking" ReadConverter="enum_from_number!(DimensionFractionFormat, HorizontalStacking, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2000" Comment="Sets the fraction format when DIMLUNIT is set to Architectural or Fractional." />
<Variable Name="DIMLDRBLK" Code="1" Type="String" Field="dimension_leader_block_name" DefaultValue="String::new()" WriteConverter="&{}" MinVersion="R2000" Comment="Arrow block name for leaders." />
<Variable Name="DIMLUNIT" Code="70" Type="NonAngularUnits" Field="dimension_non_angular_units" DefaultValue="NonAngularUnits::Decimal" ReadConverter="enum_from_number!(NonAngularUnits, Decimal, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2000" Comment="Sets units for all dimension types except angular." />
<Variable Name="DIMLWD" Code="70" Type="LineWeight" Field="dimension_line_weight" DefaultValue="LineWeight::by_layer()" ReadConverter="LineWeight::from_raw_value({})" WriteConverter="{}.raw_value()" MinVersion="R2000" Comment="Dimension line lineweight." />
<Variable Name="DIMLWE" Code="70" Type="LineWeight" Field="dimension_extension_line_weight" DefaultValue="LineWeight::by_layer()" ReadConverter="LineWeight::from_raw_value({})" WriteConverter="{}.raw_value()" MinVersion="R2000" Comment="Extension line lineweight." />
<Variable Name="DIMTMOVE" Code="70" Type="DimensionTextMovementRule" Field="dimension_text_movement_rule" DefaultValue="DimensionTextMovementRule::MoveLineWithText" ReadConverter="enum_from_number!(DimensionTextMovementRule, MoveLineWithText, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2000" Comment="Dimension text movement rules." />
<Variable Name="DIMFXL" Code="40" Type="f64" Field="dimension_line_fixed_length" DefaultValue="1.0" MinVersion="R2007" Comment="Sets the total length of the extension lines starting from the dimension line toward the dimension origin." />
<Variable Name="DIMFXLON" Code="70" Type="bool" Field="dimension_line_fixed_length_on" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R2007" Comment="Controls whether extension lines are set to a fixed length." />
<Variable Name="DIMJOGANG" Code="40" Type="f64" Field="dimension_transverse_segment_angle_in_jogged_radius" DefaultValue="::std::f64::consts::PI / 4.0" MinVersion="R2007" Comment="Determines the angle of the transverse segment of the dimension line in a jogged radius dimension." />
<Variable Name="DIMTFILL" Code="70" Type="DimensionTextBackgroundColorMode" Field="dimension_text_background_color_mode" DefaultValue="DimensionTextBackgroundColorMode::None" ReadConverter="enum_from_number!(DimensionTextBackgroundColorMode, None, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2007" Comment="Controls the background of dimension text." />
<Variable Name="DIMTFILLCLR" Code="70" Type="Color" Field="dxf_dimension_text_background_custom_color" DefaultValue="Color::by_block()" ReadConverter="Color::from_raw_value({})" WriteConverter="{}.raw_value()" MinVersion="R2007" Comment="Sets the color for the text background in dimensions." />
<Variable Name="DIMARCSYM" Code="70" Type="DimensionArcSymbolDisplayMode" Field="dimension_arc_symbol_display_mode" DefaultValue="DimensionArcSymbolDisplayMode::SymbolBeforeText" ReadConverter="enum_from_number!(DimensionArcSymbolDisplayMode, SymbolBeforeText, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2007" Comment="Controls the display of the arc symbol in an arc length dimension." />
<Variable Name="DIMLTYPE" Code="6" Type="String" Field="dimension_line_type" DefaultValue="String::from("BYLAYER")" WriteConverter="&{}" MinVersion="R2007" Comment="Sets the line type of the dimension line." />
<Variable Name="DIMLTEX1" Code="6" Type="String" Field="dimension_first_extension_line_type" DefaultValue="String::new()" WriteConverter="&{}" MinVersion="R2007" Comment="Sets the line type of the first extension line." />
<Variable Name="DIMLTEX2" Code="6" Type="String" Field="dimension_second_extension_line_type" DefaultValue="String::new()" WriteConverter="&{}" MinVersion="R2007" Comment="Sets the line type of the second extension line." />
<Variable Name="DIMTXTDIRECTION" Code="70" Type="TextDirection" Field="dimension_text_direction" DefaultValue="TextDirection::LeftToRight" ReadConverter="enum_from_number!(TextDirection, LeftToRight, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2010" Comment="Specifies the reading direction of the dimension text." />
<Variable Name="LUNITS" Code="70" Type="UnitFormat" Field="unit_format" DefaultValue="UnitFormat::Decimal" ReadConverter="enum_from_number!(UnitFormat, Decimal, from_i16, {})" WriteConverter="{} as i16" Comment="Units format for coordinates and distances." />
<Variable Name="LUPREC" Code="70" Type="i16" Field="unit_precision" DefaultValue="4" Comment="Units precision for coordinates and distances." />
<Variable Name="SKETCHINC" Code="40" Type="f64" Field="sketch_record_increment" DefaultValue="0.1" Comment="Sketch record increment." />
<Variable Name="FILLETRAD" Code="40" Type="f64" Field="fillet_radius" DefaultValue="0.0" Comment="Fillet radius." />
<Variable Name="AUNITS" Code="70" Type="AngleFormat" Field="angle_unit_format" DefaultValue="AngleFormat::DecimalDegrees" ReadConverter="enum_from_number!(AngleFormat, DecimalDegrees, from_i16, {})" WriteConverter="{} as i16" Comment="Units format for angles." />
<Variable Name="AUPREC" Code="70" Type="i16" Field="angle_unit_precision" DefaultValue="0" Comment="Units precision for angles." />
<Variable Name="MENU" Code="1" Type="String" Field="file_name" DefaultValue="String::from(".")" WriteConverter="&{}" Comment="Name of menu file." />
<Variable Name="ELEVATION" Code="40" Type="f64" Field="elevation" DefaultValue="0.0" Comment="Current elevation set by ELEV command." />
<Variable Name="PELEVATION" Code="40" Type="f64" Field="paperspace_elevation" DefaultValue="0.0" MinVersion="R11" Comment="Current paper space elevation." />
<Variable Name="THICKNESS" Code="40" Type="f64" Field="thickness" DefaultValue="0.0" Comment="Current thickness set by ELEV command." />
<Variable Name="LIMCHECK" Code="70" Type="bool" Field="use_limits_checking" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Limits checking." />
<Variable Name="BLIPMODE" Code="70" Type="bool" Field="blip_mode" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MaxVersion="R14" Comment="Display blips for click locations." />
<Variable Name="CHAMFERA" Code="40" Type="f64" Field="first_chamfer_distance" DefaultValue="0.0" Comment="First chamfer distance." />
<Variable Name="CHAMFERB" Code="40" Type="f64" Field="second_chamfer_distance" DefaultValue="0.0" Comment="Second chamfer distance." />
<Variable Name="CHAMFERC" Code="40" Type="f64" Field="chamfer_length" DefaultValue="0.0" MinVersion="R14" Comment="Chamfer length." />
<Variable Name="CHAMFERD" Code="40" Type="f64" Field="chamfer_angle" DefaultValue="0.0" MinVersion="R14" Comment="Chamfer angle." />
<Variable Name="SKPOLY" Code="70" Type="PolySketchMode" Field="polyline_sketch_mode" DefaultValue="PolySketchMode::SketchLines" ReadConverter="enum_from_number!(PolySketchMode, SketchLines, from_i16, {})" WriteConverter="{} as i16" Comment="Controls polyline sketch mode." />
<Variable Name="TDCREATE" Code="40" Type="DateTime<Local>" Field="creation_date" DefaultValue="Local::now()" ReadConverter="as_datetime_local({})" WriteConverter="as_double_local({})" Comment="Local date/time of drawing creation." />
<Variable Name="TDUCREATE" Code="40" Type="DateTime<Utc>" Field="creation_date_universal" DefaultValue="Utc::now()" ReadConverter="as_datetime_utc({})" WriteConverter="as_double_utc({})" MinVersion="R2000" Comment="Universal date/time the drawing was created." />
<Variable Name="TDUPDATE" Code="40" Type="DateTime<Local>" Field="update_date" DefaultValue="Local::now()" ReadConverter="as_datetime_local({})" WriteConverter="as_double_local({})" Comment="Local date/time of last drawing update." />
<Variable Name="TDUUPDATE" Code="40" Type="DateTime<Utc>" Field="update_date_universal" DefaultValue="Utc::now()" ReadConverter="as_datetime_utc({})" WriteConverter="as_double_utc({})" MinVersion="R2000" Comment="Universal date/time of the last update/save." />
<Variable Name="TDINDWG" Code="40" Type="Duration" Field="time_in_drawing" DefaultValue="Duration::default()" ReadConverter="as_duration({})" WriteConverter="duration_as_double({})" Comment="Cumulative editing time for this drawing." />
<Variable Name="TDUSRTIMER" Code="40" Type="Duration" Field="user_elapsed_timer" DefaultValue="Duration::default()" ReadConverter="as_duration({})" WriteConverter="duration_as_double({})" Comment="User-elapsed timer." />
<Variable Name="USRTIMER" Code="70" Type="bool" Field="user_timer_on" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="User timer on." />
<Variable Name="ANGBASE" Code="50" Type="f64" Field="angle_zero_direction" DefaultValue="0.0" Comment="Angle 0 direction." />
<Variable Name="ANGDIR" Code="70" Type="AngleDirection" Field="angle_direction" DefaultValue="AngleDirection::CounterClockwise" ReadConverter="enum_from_number!(AngleDirection, CounterClockwise, from_i16, {})" WriteConverter="{} as i16" Comment="Angle directions." />
<Variable Name="PDMODE" Code="70" Type="i32" Field="point_display_mode" DefaultValue="0" ReadConverter="i32::from({})" WriteConverter="{} as i16" Comment="Point display mode." />
<Variable Name="PDSIZE" Code="40" Type="f64" Field="point_display_size" DefaultValue="0.0" Comment="Point display size." />
<Variable Name="PLINEWID" Code="40" Type="f64" Field="default_polyline_width" DefaultValue="0.0" Comment="Default polyline width." />
<Variable Name="COORDS" Code="70" Type="CoordinateDisplay" Field="coordinate_display" DefaultValue="CoordinateDisplay::ContinuousUpdate" ReadConverter="enum_from_number!(CoordinateDisplay, ContinuousUpdate, from_i16, {})" WriteConverter="{} as i16" MaxVersion="R14" Comment="Controls the display of coordinates." />
<Variable Name="SPLFRAME" Code="70" Type="bool" Field="display_spline_polygon_control" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MaxVersion="R2013" Comment="Controls the display of helixes and smoothed mesh objects." />
<Variable Name="SPLINETYPE" Code="70" Type="PolylineCurvedAndSmoothSurfaceType" Field="pedit_spline_curve_type" DefaultValue="PolylineCurvedAndSmoothSurfaceType::CubicBSpline" ReadConverter="enum_from_number!(PolylineCurvedAndSmoothSurfaceType, CubicBSpline, from_i16, {})" WriteConverter="{} as i16" Comment="Spline curve type for PEDIT Spline." />
<Variable Name="SPLINESEGS" Code="70" Type="i16" Field="line_segments_per_spline_patch" DefaultValue="8" Comment="Number of line segments per spline hatch." />
<Variable Name="ATTDIA" Code="70" Type="bool" Field="show_attribute_entry_dialogs" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MaxVersion="R14" Comment="Controls whether the INSERT command uses a dialog box for attribute value entry." />
<Variable Name="ATTREQ" Code="70" Type="bool" Field="prompt_for_attribute_on_insert" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MaxVersion="R14" Comment="Controls whether INSERT uses default attribute settings during insertion of blocks." />
<Variable Name="HANDLING" Code="70" Type="bool" Field="handles_enabled" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MaxVersion="R12" Comment="Handles available." />
<Variable Name="HANDSEED" Code="5" Type="Handle" Field="next_available_handle" DefaultValue="Handle(1)" ReaderOverride="pair.as_handle()?" WriteConverter="&{}.as_string()" Comment="Next available handle." />
<Variable Name="SURFTAB1" Code="70" Type="i16" Field="mesh_tabulations_in_first_direction" DefaultValue="6" Comment="Number of mesh tabulations in first direction." />
<Variable Name="SURFTAB2" Code="70" Type="i16" Field="mesh_tabulations_in_second_direction" DefaultValue="6" Comment="Number of mesh tabulations in second direction." />
<Variable Name="SURFTYPE" Code="70" Type="PolylineCurvedAndSmoothSurfaceType" Field="pedit_smooth_surface_type" DefaultValue="PolylineCurvedAndSmoothSurfaceType::CubicBSpline" ReadConverter="enum_from_number!(PolylineCurvedAndSmoothSurfaceType, CubicBSpline, from_i16, {})" WriteConverter="{} as i16" Comment="Surface type for PEDIT Smooth." />
<Variable Name="SURFU" Code="70" Type="i16" Field="pedit_smooth_m_densith" DefaultValue="6" Comment="Surface density (for PEDIT Smooth) in M direction." />
<Variable Name="SURFV" Code="70" Type="i16" Field="pedit_smooth_n_densith" DefaultValue="6" Comment="Surface density (for PEDIT Smooth) in N direction." />
<Variable Name="UCSBASE" Code="2" Type="String" Field="ucs_definition_name" DefaultValue="String::new()" WriteConverter="&{}" MinVersion="R2000" Comment="Name of the UCS that defines the origin and orientation of orthographic UCS settings." />
<!-- spec says code 1 in R10, but AutoCAD only opens if it's a code 2, regardless of version -->
<Variable Name="UCSNAME" Code="2" Type="String" Field="ucs_name" DefaultValue="String::new()" WriteConverter="&{}" Comment="Name of current UCS." />
<Variable Name="UCSORG" Code="-3" Type="Point" Field="ucs_origin" DefaultValue="Point::origin()" Comment="Origin of current UCS (in WCS)." />
<Variable Name="UCSXDIR" Code="-3" Type="Vector" Field="ucs_x_axis" DefaultValue="Vector::x_axis()" Comment="Direction of the current UCS X axis (in WCS)." />
<Variable Name="UCSYDIR" Code="-3" Type="Vector" Field="ucs_y_axis" DefaultValue="Vector::y_axis()" Comment="Direction of the current UCS Y axis (in WCS)." />
<Variable Name="UCSORTHOREF" Code="2" Type="String" Field="ortho_ucs_reference" DefaultValue="String::new()" WriteConverter="&{}" MinVersion="R2000" Comment="If model space UCS is orthographic (UCSORTHOVIEW not equal to 0), this is the name of the UCS that the orthographic UCS is relative to. If blank, UCS is relative to WORLD." />
<Variable Name="UCSORTHOVIEW" Code="70" Type="OrthographicViewType" Field="orthgraphic_view_type" DefaultValue="OrthographicViewType::None" ReadConverter="enum_from_number!(OrthographicViewType, None, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2000" Comment="Orthographic view type of model space UCS." />
<Variable Name="UCSORGTOP" Code="-3" Type="Point" Field="ucs_origin_top" DefaultValue="Point::origin()" MinVersion="R2000" Comment="Point which becomes the new UCS origin after changing model space UCS to TOP when UCSBASE is set to WORLD." />
<Variable Name="UCSORGBOTTOM" Code="-3" Type="Point" Field="ucs_origin_bottom" DefaultValue="Point::origin()" MinVersion="R2000" Comment="Point which becomes the new UCS origin after changing model space UCS to BOTTOM when UCSBASE is set to WORLD." />
<Variable Name="UCSORGLEFT" Code="-3" Type="Point" Field="ucs_origin_left" DefaultValue="Point::origin()" MinVersion="R2000" Comment="Point which becomes the new UCS origin after changing model space UCS to LEFT when UCSBASE is set to WORLD." />
<Variable Name="UCSORGRIGHT" Code="-3" Type="Point" Field="ucs_origin_right" DefaultValue="Point::origin()" MinVersion="R2000" Comment="Point which becomes the new UCS origin after changing model space UCS to RIGHT when UCSBASE is set to WORLD." />
<Variable Name="UCSORGFRONT" Code="-3" Type="Point" Field="ucs_origin_front" DefaultValue="Point::origin()" MinVersion="R2000" Comment="Point which becomes the new UCS origin after changing model space UCS to FRONT when UCSBASE is set to WORLD." />
<Variable Name="UCSORGBACK" Code="-3" Type="Point" Field="ucs_origin_back" DefaultValue="Point::origin()" MinVersion="R2000" Comment="Point which becomes the new UCS origin after changing model space UCS to BACK when UCSBASE is set to WORLD." />
<Variable Name="PUCSBASE" Code="2" Type="String" Field="paperspace_ucs_definition_name" DefaultValue="String::new()" WriteConverter="&{}" MinVersion="R2000" Comment="Name of the UCS that defines the origin and orientation of orthographics UCS settings (paper space only)." />
<Variable Name="PUCSNAME" Code="2" Type="String" Field="paperspace_ucs_name" DefaultValue="String::new()" WriteConverter="&{}" MinVersion="R11" Comment="Current paper space UCS name." />
<Variable Name="PUCSORG" Code="-3" Type="Point" Field="paperspace_ucs_origin" DefaultValue="Point::origin()" MinVersion="R11" Comment="Current paper space UCS origin." />
<Variable Name="PUCSXDIR" Code="-3" Type="Vector" Field="paperspace_x_axis" DefaultValue="Vector::x_axis()" MinVersion="R11" Comment="Current paper space UCS X axis." />
<Variable Name="PUCSYDIR" Code="-3" Type="Vector" Field="paperspace_y_axis" DefaultValue="Vector::y_axis()" MinVersion="R11" Comment="Current paper space UCS Y axis." />
<Variable Name="PUCSORTHOREF" Code="2" Type="String" Field="paperspace_ortho_ucs_reference" DefaultValue="String::new()" WriteConverter="&{}" MinVersion="R2000" Comment="If paper space UCS is orthographic (PUCSORTHOVIEW not equal to 0), this is the name of the UCS that the orthographic UCS is relative to. If blank, UCS is relative to WORLD." />
<Variable Name="PUCSORTHOVIEW" Code="70" Type="OrthographicViewType" Field="paperspace_orthographic_view_type" DefaultValue="OrthographicViewType::None" ReadConverter="enum_from_number!(OrthographicViewType, None, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2000" Comment="Orthographic view type of paper space UCS." />
<Variable Name="PUCSORGTOP" Code="-3" Type="Point" Field="paperspace_ucs_origin_top" DefaultValue="Point::origin()" MinVersion="R2000" Comment="Point which becomes the new UCS origin after changing paper space UCS to TOP when PUCSBASE is set to WORLD." />
<Variable Name="PUCSORGBOTTOM" Code="-3" Type="Point" Field="paperspace_ucs_origin_bottom" DefaultValue="Point::origin()" MinVersion="R2000" Comment="Point which becomes the new UCS origin after changing paper space UCS to BOTTOM when PUCSBASE is set to WORLD." />
<Variable Name="PUCSORGLEFT" Code="-3" Type="Point" Field="paperspace_ucs_origin_left" DefaultValue="Point::origin()" MinVersion="R2000" Comment="Point which becomes the new UCS origin after changing paper space UCS to LEFT when PUCSBASE is set to WORLD." />
<Variable Name="PUCSORGRIGHT" Code="-3" Type="Point" Field="paperspace_ucs_origin_right" DefaultValue="Point::origin()" MinVersion="R2000" Comment="Point which becomes the new UCS origin after changing paper space UCS to RIGHT when PUCSBASE is set to WORLD." />
<Variable Name="PUCSORGFRONT" Code="-3" Type="Point" Field="paperspace_ucs_origin_front" DefaultValue="Point::origin()" MinVersion="R2000" Comment="Point which becomes the new UCS origin after changing paper space UCS to FRONT when PUCSBASE is set to WORLD." />
<Variable Name="PUCSORGBACK" Code="-3" Type="Point" Field="paperspace_ucs_origin_back" DefaultValue="Point::origin()" MinVersion="R2000" Comment="Point which becomes the new UCS origin after changing paper space UCS to BACK when PUCSBASE is set to WORLD." />
<Variable Name="USERI1" Code="70" Type="i16" Field="user_int1" DefaultValue="0" Comment="Integer variable intended for use by third-party developers." />
<Variable Name="USERI2" Code="70" Type="i16" Field="user_int2" DefaultValue="0" Comment="Integer variable intended for use by third-party developers." />
<Variable Name="USERI3" Code="70" Type="i16" Field="user_int3" DefaultValue="0" Comment="Integer variable intended for use by third-party developers." />
<Variable Name="USERI4" Code="70" Type="i16" Field="user_int4" DefaultValue="0" Comment="Integer variable intended for use by third-party developers." />
<Variable Name="USERI5" Code="70" Type="i16" Field="user_int5" DefaultValue="0" Comment="Integer variable intended for use by third-party developers." />
<Variable Name="USERR1" Code="40" Type="f64" Field="user_real1" DefaultValue="0.0" Comment="Real variable indented for use by third-party developers." />
<Variable Name="USERR2" Code="40" Type="f64" Field="user_real2" DefaultValue="0.0" Comment="Real variable indented for use by third-party developers." />
<Variable Name="USERR3" Code="40" Type="f64" Field="user_real3" DefaultValue="0.0" Comment="Real variable indented for use by third-party developers." />
<Variable Name="USERR4" Code="40" Type="f64" Field="user_real4" DefaultValue="0.0" Comment="Real variable indented for use by third-party developers." />
<Variable Name="USERR5" Code="40" Type="f64" Field="user_real5" DefaultValue="0.0" Comment="Real variable indented for use by third-party developers." />
<Variable Name="WORLDVIEW" Code="70" Type="bool" Field="set_ucs_to_wcs_in_d_view_or_v_point" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" Comment="Set UCS to WCS during DVIEW/VPOINT." />
<Variable Name="SHADEDGE" Code="70" Type="ShadeEdgeMode" Field="edge_shading" DefaultValue="ShadeEdgeMode::FacesInEntityColorEdgesInBlack" ReadConverter="enum_from_number!(ShadeEdgeMode, FacesInEntityColorEdgesInBlack, from_i16, {})" WriteConverter="{} as i16" MinVersion="R11" Comment="Controls shading of faces." />
<Variable Name="SHADEDIF" Code="70" Type="i16" Field="percent_ambient_to_diffuse" DefaultValue="70" MinVersion="R11" Comment="Percent ambient/diffuse light; range 1-100." />
<Variable Name="TILEMODE" Code="70" Type="bool" Field="previous_release_tile_compatability" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R11" Comment="Use previous release compatibility mode." />
<Variable Name="MAXACTVP" Code="70" Type="i16" Field="maximum_active_viewports" DefaultValue="64" MinVersion="R11" Comment="Sets the maximum number of viewports to be regenerated." />
<Variable Name="PINSBASE" Code="-3" Type="Point" Field="paperspace_insertion_base" DefaultValue="Point::origin()" MinVersion="R14" Comment="Paper space insertion base point." />
<Variable Name="PLIMCHECK" Code="70" Type="bool" Field="limit_checking_in_paperspace" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R11" Comment="Limits checking in paper space." />
<Variable Name="PEXTMIN" Code="-3" Type="Point" Field="paperspace_minimum_drawing_extents" DefaultValue="Point::new(1.0e20, 1.0e20, 1.0e20)" MinVersion="R11" Comment="Minimum X, Y, and Z extents for paper space." />
<Variable Name="PEXTMAX" Code="-3" Type="Point" Field="paperspace_maximum_drawing_extents" DefaultValue="Point::new(-1.0e20, -1.0e20, -1.0e20)" MinVersion="R11" Comment="Maximum X, Y, and Z extents for paper space." />
<Variable Name="PLIMMIN" Code="-2" Type="Point" Field="paperspace_minimum_drawing_limits" DefaultValue="Point::origin()" MinVersion="R11" Comment="Minimum X and Y limits in paper space." />
<Variable Name="PLIMMAX" Code="-2" Type="Point" Field="paperspace_maximum_drawing_limits" DefaultValue="Point::new(12.0, 9.0, 0.0)" MinVersion="R11" Comment="Maximum X and Y limits in paper space." />
<Variable Name="UNITMODE" Code="70" Type="bool" Field="display_fractions_in_input" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R11" Comment="Display fractions, feet-and-inches, and surveyor's angles in input format." />
<Variable Name="VISRETAIN" Code="70" Type="bool" Field="retain_x_ref_dependent_visibility_settings" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R12" Comment="Retain xref-dependent visibility settings." />
<Variable Name="PLINEGEN" Code="70" Type="bool" Field="is_polyline_continuous_around_verticies" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R11" Comment="Governs the generation of line type patterns around the vertices of a 2D polyline." />
<Variable Name="PSLTSCALE" Code="70" Type="bool" Field="scale_line_types_in_paperspace" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R11" Comment="Controls paper space line type scaling." />
<Variable Name="TREEDEPTH" Code="70" Type="i16" Field="spacial_index_max_depth" DefaultValue="3020" MinVersion="R14" Comment="Specifies the maximum depth of the spatial index." />
<Variable Name="PICKSTYLE" Code="70" Type="PickStyle" Field="pick_style" DefaultValue="PickStyle::Group" ReadConverter="enum_from_number!(PickStyle, Group, from_i16, {})" WriteConverter="{} as i16" MinVersion="R13" MaxVersion="R14" Comment="Controls the group selection and associative hatch selection." />
<!-- code 7 in R13, code 2 in R14+ -->
<Variable Name="CMLSTYLE" Code="7" Type="String" Field="current_multiline_style" DefaultValue="String::from("STANDARD")" WriteConverter="&{}" MinVersion="R13" MaxVersion="R13" Comment="Current multiline style name." />
<Variable Name="CMLSTYLE" Code="2" Type="String" Field="current_multiline_style" DefaultValue="String::from("STANDARD")" WriteConverter="&{}" MinVersion="R14" Comment="Current multiline style name." />
<Variable Name="CMLJUST" Code="70" Type="Justification" Field="current_multiline_justification" DefaultValue="Justification::Top" ReadConverter="enum_from_number!(Justification, Top, from_i16, {})" WriteConverter="{} as i16" MinVersion="R13" Comment="Current multiline justification." />
<Variable Name="CMLSCALE" Code="40" Type="f64" Field="current_multiline_scale" DefaultValue="1.0" MinVersion="R13" Comment="Current multiline scale." />
<Variable Name="PROXYGRAPHICS" Code="70" Type="bool" Field="save_proxy_graphics" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R14" Comment="Controls the saving of proxy object images." />
<Variable Name="MEASUREMENT" Code="70" Type="DrawingUnits" Field="drawing_units" DefaultValue="DrawingUnits::English" ReadConverter="enum_from_number!(DrawingUnits, English, from_i16, {})" WriteConverter="{} as i16" MinVersion="R14" Comment="Sets drawing units." />
<Variable Name="CELWEIGHT" Code="370" Type="LineWeight" Field="new_object_line_weight" DefaultValue="LineWeight::by_block()" ReadConverter="LineWeight::from_raw_value({})" WriteConverter="{}.raw_value()" MinVersion="R2000" Comment="Lineweight of new objects." />
<Variable Name="ENDCAPS" Code="280" Type="EndCapSetting" Field="end_cap_setting" DefaultValue="EndCapSetting::None" ReadConverter="enum_from_number!(EndCapSetting, None, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2000" Comment="Lineweight endcaps setting for new objects." />
<Variable Name="JOINSTYLE" Code="280" Type="JoinStyle" Field="lineweight_joint_setting" DefaultValue="JoinStyle::None" ReadConverter="enum_from_number!(JoinStyle, None, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2000" Comment="Lineweight join setting for new objects." />
<Variable Name="LWDISPLAY" Code="290" Type="bool" Field="display_linewieght_in_model_and_layout_tab" DefaultValue="false" MinVersion="R2000" Comment="Controls the display of lineweights on the Model or Layout tab." />
<Variable Name="INSUNITS" Code="70" Type="Units" Field="default_drawing_units" DefaultValue="Units::Unitless" ReadConverter="enum_from_number!(Units, Unitless, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2000" Comment="Default drawing units for AutoCAD DesignCenter blocks." />
<Variable Name="HYPERLINKBASE" Code="1" Type="String" Field="hyperlink_base" DefaultValue="String::new()" WriteConverter="&{}" MinVersion="R2000" Comment="Path for all relative hyperlinks in the drawing. If null, the drawing path is used." />
<Variable Name="STYLESHEET" Code="1" Type="String" Field="stylesheet" DefaultValue="String::new()" WriteConverter="&{}" MinVersion="R2000" Comment="Path to the stylesheet for the drawing." />
<Variable Name="XEDIT" Code="290" Type="bool" Field="can_use_in_place_reference_editing" DefaultValue="true" MinVersion="R2000" Comment="Controls whether the current drawing can be edited in-place when being referenced by another drawing." />
<Variable Name="CEPSNID" Code="390" Type="Handle" Field="new_object_plot_style_handle" DefaultValue="Handle::empty()" ReaderOverride="pair.as_handle()?" WriteConverter="&{}.as_string()" MinVersion="R2000" DontWriteDefault="true" Comment="PlotStyle handle of new objects." />
<Variable Name="CEPSNTYPE" Code="380" Type="PlotStyle" Field="new_object_plot_style" DefaultValue="PlotStyle::ByLayer" ReadConverter="enum_from_number!(PlotStyle, ByLayer, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2000" Comment="Plot style of new objects." />
<Variable Name="PSTYLEMODE" Code="290" Type="bool" Field="uses_color_dependent_plot_style_tables" DefaultValue="true" MinVersion="R2000" Comment="Indicates whether the current drawing is in a Color-Dependent or Named Plot Style mode." />
<Variable Name="FINGERPRINTGUID" Code="2" Type="Uuid" Field="fingerprint_guid" DefaultValue="Uuid::new_v4()" ReadConverter="as_uuid({})" WriteConverter="&uuid_string(&{})" MinVersion="R2000" Comment="Set at creation time, uniquely identifies a particular drawing." />
<Variable Name="VERSIONGUID" Code="2" Type="Uuid" Field="version_guid" DefaultValue="Uuid::new_v4()" ReadConverter="as_uuid({})" WriteConverter="&uuid_string(&{})" MinVersion="R2000" Comment="Uniquely identifies a particular version of a drawing. Updated when the drawing is modified." />
<Variable Name="EXTNAMES" Code="290" Type="bool" Field="use_acad2000_symbol_table_naming" DefaultValue="true" MinVersion="R2000" Comment="Controls symbol table naming." />
<Variable Name="PSVPSCALE" Code="40" Type="f64" Field="viewport_view_scale_factor" DefaultValue="0.0" MinVersion="R2000" Comment="View scale factor for new viewports." />
<Variable Name="OLESTARTUP" Code="290" Type="bool" Field="ole_startup" DefaultValue="false" MinVersion="R2000" Comment="Controls whether the source application of an embedded OLE object loads when plotting." />
<Variable Name="SORTENTS" Code="280" Type="i32" Field="object_sorting_methods_flags" DefaultValue="127" ReadConverter="i32::from({})" WriteConverter="{} as i16" MinVersion="R2004" Comment="Controls the object sorting methods; accessible from the Options dialog box User Preferences tab.">
<Flag Name="sort_objects_for_object_selection" Mask="1" Comment="Sorts for object selection." />
<Flag Name="sort_objects_for_object_snap" Mask="2" Comment="Sorts for object snap." />
<Flag Name="sort_objects_for_redraw" Mask="4" Comment="Sorts for redraws." />
<Flag Name="sort_objects_for_mslide" Mask="8" Comment="Sorts for MSLIDE command slide creation." />
<Flag Name="sort_objects_for_regen" Mask="16" Comment="Sorts for REGEN commands." />
<Flag Name="sort_objects_for_plotting" Mask="32" Comment="Sorts for plotting." />
<Flag Name="sort_objects_for_post_script_output" Mask="64" Comment="Sorts for PostScript output." />
</Variable>
<Variable Name="INDEXCTL" Code="280" Type="LayerAndSpatialIndexSaveMode" Field="layer_and_spatial_index_save_mode" DefaultValue="LayerAndSpatialIndexSaveMode::None" ReadConverter="enum_from_number!(LayerAndSpatialIndexSaveMode, None, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2004" Comment="Controls whether layer and spatial indexes are created and saved in drawing files." />
<!-- the spec says this should be a code 290 bool, but most files encountered in the wild have a code 280 short instead -->
<Variable Name="HIDETEXT" Code="280" Type="bool" Field="hide_text_objects_when_producint_hidden_view" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R2004" Comment="Ignore text objects." />
<Variable Name="HIDETEXT" Code="290" Type="bool" Field="hide_text_objects_when_producint_hidden_view" DefaultValue="false" MinVersion="R2004" SuppressWriting="true" Comment="Ignore text objects." />
<!-- R2004-R2007 this is a 290 bool, but R2010+ this is a 280 short -->
<Variable Name="XCLIPFRAME" Code="290" Type="XrefClippingBoundaryVisibility" Field="is_x_ref_clipping_boundary_visible" DefaultValue="XrefClippingBoundaryVisibility::DisplayedNotPlotted" ReadConverter="clipping_from_bool({})" WriteConverter="bool_from_clipping({})" MinVersion="R2004" MaxVersion="R2007" Comment="Controls the visibility of xref clipping boundaries." />
<Variable Name="XCLIPFRAME" Code="280" Type="XrefClippingBoundaryVisibility" Field="is_x_ref_clipping_boundary_visible" DefaultValue="XrefClippingBoundaryVisibility::DisplayedNotPlotted" ReadConverter="enum_from_number!(XrefClippingBoundaryVisibility, DisplayedNotPlotted, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2010" Comment="Controls the visibility of xref clipping boundaries." />
<Variable Name="HALOGAP" Code="280" Type="f64" Field="halo_gap_percent" DefaultValue="0.0" ReadConverter="f64::from({})" WriteConverter="{} as i16" MinVersion="R2004" Comment="Specifies a gap to be displayed where an object is hidden by another object; the value is specified as a percent of one unit and is independent of the zoom level. A haloed line is shortened at the point where it is hidden when HIDE or the Hidden option of SHADEMODE is used." />
<Variable Name="OBSCOLOR" Code="70" Type="Color" Field="obscured_line_color" DefaultValue="Color::by_entity()" ReadConverter="Color::from_raw_value({})" WriteConverter="{}.raw_value()" MinVersion="R2004" Comment="Specifies the color of obscured lines. An obscured line is a hidden line made visible by changing its color and line type and is visible only when the HIDE or SHADEMODE command is used. The OBSCUREDCOLOR setting is visible only if the OBSCUREDLTYPE is turned ON by setting it to a value other than 0." />
<Variable Name="OBSLTYPE" Code="280" Type="LineTypeStyle" Field="obscured_line_type_style" DefaultValue="LineTypeStyle::Off" ReadConverter="enum_from_number!(LineTypeStyle, Off, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2004" Comment="Specifies the line type of obscured lines. Obscured line types are independent of zoom level, unlike regular AutoCAD line types. Value 0 turns off display of obscured lines and is the default." />
<!-- the spec says this should be a code 290 bool, but most files encountered in the wild have a code 280 short instead -->
<Variable Name="INTERSECTIONDISPLAY" Code="280" Type="bool" Field="display_intersection_polylines" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R2004" Comment="Specifies the display of intersection polylines." />
<Variable Name="INTERSECTIONDISPLAY" Code="290" Type="bool" Field="display_intersection_polylines" DefaultValue="false" MinVersion="R2004" SuppressWriting="true" Comment="Specifies the display of intersection polylines." />
<Variable Name="INTERSECTIONCOLOR" Code="70" Type="Color" Field="intersection_polyline_color" DefaultValue="Color::by_entity()" ReadConverter="Color::from_raw_value({})" WriteConverter="{}.raw_value()" MinVersion="R2004" Comment="Specifies the entity color of intersection polylines." />
<Variable Name="DIMASSOC" Code="280" Type="DimensionAssociativity" Field="dimension_object_associativity" DefaultValue="DimensionAssociativity::NonAssociativeObjects" ReadConverter="enum_from_number!(DimensionAssociativity, NonAssociativeObjects, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2004" Comment="Controls the associativity of dimension objects." />
<Variable Name="PROJECTNAME" Code="1" Type="String" Field="project_name" DefaultValue="String::new()" WriteConverter="&{}" MinVersion="R2004" Comment="Assigns a project name to the current drawing. Used when an external reference or image is not found on its original path. The project name points to a section in the registry that can contain one or more search paths for each project name defined. Project names and their search directories are created from the Files tab of the Options dialog box." />
<Variable Name="CAMERADISPLAY" Code="290" Type="bool" Field="use_camera_display" DefaultValue="false" MinVersion="R2007" Comment="Turns the display of camera objects on or off." />
<Variable Name="LENSLENGTH" Code="40" Type="f64" Field="lens_length" DefaultValue="50.0" MinVersion="R2007" Comment="Stores the length of the lens in millimeters used in perspective viewing." />
<Variable Name="CAMERAHEIGHT" Code="40" Type="f64" Field="camera_height" DefaultValue="0.0" MinVersion="R2007" Comment="Specifies the default height for new camera objects." />
<Variable Name="STEPSPERSEC" Code="40" Type="f64" Field="steps_per_second_in_walk_or_fly_mode" DefaultValue="2.0" MinVersion="R2007" Comment="Specifies the number of steps taken per second when you are in walk or fly mode." />
<Variable Name="STEPSIZE" Code="40" Type="f64" Field="step_size_in_walk_or_fly_mode" DefaultValue="6.0" MinVersion="R2007" Comment="Specifies the size of each step when in walk or fly mode, in drawing units." />
<Variable Name="3DDWFPREC" Code="40" Type="Dwf3DPrecision" Field="dwf_3d_precision" DefaultValue="Dwf3DPrecision::Deviation_0_5" ReadConverter="enum_from_number!(Dwf3DPrecision, Deviation_0_5, from_f64, {})" WriteConverter="f64::from({} as i32)" MinVersion="R2007" Comment="Controls the precision of 3D DWF or 3D DWFx publishing." />
<Variable Name="PSOLWIDTH" Code="40" Type="f64" Field="last_poly_solid_width" DefaultValue="0.25" MinVersion="R2007" Comment="Controls the default width for a swept solid object created with the POLYSOLID command." />
<Variable Name="PSOLHEIGHT" Code="40" Type="f64" Field="last_poly_solid_height" DefaultValue="4.0" MinVersion="R2007" Comment="Controls the default height for a swept solid object created with the POLYSOLID command." />
<Variable Name="LOFTANG1" Code="40" Type="f64" Field="loft_operation_first_draft_angle" DefaultValue="::std::f64::consts::PI / 2.0" MinVersion="R2007" Comment="Sets the draft angle through the first cross section in a loft operation." />
<Variable Name="LOFTANG2" Code="40" Type="f64" Field="loft_operation_second_draft_angle" DefaultValue="::std::f64::consts::PI / 2.0" MinVersion="R2007" Comment="Sets the draft angle through the second cross section in a loft operation." />
<Variable Name="LOFTMAG1" Code="40" Type="f64" Field="loft_operation_first_magnitude" DefaultValue="0.0" MinVersion="R2007" Comment="Sets the magnitude of the draft angle through the first cross section in a loft operation." />
<Variable Name="LOFTMAG2" Code="40" Type="f64" Field="loft_operation_second_magnitude" DefaultValue="0.0" MinVersion="R2007" Comment="Sets the magnitude of the draft angle through the second cross section in a loft operation." />
<Variable Name="LOFTPARAM" Code="70" Type="i32" Field="loft_flags" DefaultValue="7" ReadConverter="i32::from({})" WriteConverter="{} as i16" MinVersion="R2007" Comment="Controls the shape of lofted solids and surfaces.">
<Flag Name="no_twist" Mask="1" Comment="No twist (minimizes the twist between cross sections)." />
<Flag Name="align_direction" Mask="2" Comment="Align direction (aligns the start to end direction of each cross section curve)." />
<Flag Name="simplify" Mask="4" Comment="Simplify (produces simple solids and surfaces, such as a cylinder or plane, instead of spline solids and surfaces)." />
<Flag Name="close" Mask="8" Comment="Close (closes the surface or solid between the first and the last cross sections)." />
</Variable>
<Variable Name="LOFTNORMALS" Code="280" Type="LoftedObjectNormalMode" Field="lofted_object_normal_mode" DefaultValue="LoftedObjectNormalMode::SmoothFit" ReadConverter="enum_from_number!(LoftedObjectNormalMode, SmoothFit, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2007" Comment="Controls the normals of a lofted object where it passes through cross sections." />
<Variable Name="LATITUDE" Code="40" Type="f64" Field="latitude" DefaultValue="37.7950" MinVersion="R2007" Comment="The latitude of the geographic location assigned to the drawing." />
<Variable Name="LONGITUDE" Code="40" Type="f64" Field="longitude" DefaultValue="-122.3940" MinVersion="R2007" Comment="The longitude of the geographic location assigned to the drawing." />
<Variable Name="NORTHDIRECTION" Code="40" Type="f64" Field="angle_between_y_axis_and_north" DefaultValue="0.0" MinVersion="R2007" Comment="Specifies the angle between the Y axis of WCS and the grid north." />
<Variable Name="TIMEZONE" Code="70" Type="DrawingTimeZone" Field="time_zone" DefaultValue="DrawingTimeZone::PacificTime_US_Canada_SanFrancisco_Vancouver" ReadConverter="enum_from_number!(DrawingTimeZone, PacificTime_US_Canada_SanFrancisco_Vancouver, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2007" Comment="Sets the time zone for the sun in the drawing." />
<Variable Name="LIGHTGLYPHDISPLAY" Code="280" Type="bool" Field="use_light_glyph_display" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R2007" Comment="Turns on and off the display of light glyphs." />
<Variable Name="TILEMODELIGHTSYNCH" Code="280" Type="bool" Field="use_tile_mode_light_sync" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R2007" Comment="Unknown." />
<Variable Name="CMATERIAL" Code="347" Type="Handle" Field="current_material_handle" DefaultValue="Handle::empty()" ReaderOverride="pair.as_handle()?" WriteConverter="&{}.as_string()" DontWriteDefault="true" MinVersion="R2007" Comment="Sets the material of new objects." />
<Variable Name="SOLIDHIST" Code="280" Type="bool" Field="new_solids_contain_history" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MinVersion="R2007" Comment="Controls whether new composite solids retain a history of their original components." />
<Variable Name="SHOWHIST" Code="280" Type="SolidHistoryMode" Field="solid_history_mode" DefaultValue="SolidHistoryMode::DoesNotOverride" ReadConverter="enum_from_number!(SolidHistoryMode, DoesNotOverride, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2007" Comment="Controls the Show History property for solids in a drawing." />
<Variable Name="DWFFRAME" Code="280" Type="UnderlayFrameMode" Field="dwf_underlay_frame_mode" DefaultValue="UnderlayFrameMode::DisplayNoPlot" ReadConverter="enum_from_number!(UnderlayFrameMode, DisplayNoPlot, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2007" Comment="Determines whether DWF or DWFx underlay frames are visible or plotted in the current drawing." />
<Variable Name="DGNFRAME" Code="280" Type="UnderlayFrameMode" Field="dgn_underlay_frame_mode" DefaultValue="UnderlayFrameMode::None" ReadConverter="enum_from_number!(UnderlayFrameMode, None, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2007" Comment="Determines whether DGN underlay frames are visible or plotted in the current drawing." />
<Variable Name="REALWORLDSCALE" Code="290" Type="bool" Field="use_real_world_scale" DefaultValue="true" MinVersion="R2007" Comment="Drawing is scaled to the real world." />
<Variable Name="INTERFERECOLOR" Code="62" Type="Color" Field="interference_object_color" DefaultValue="Color::from_index(1)" ReadConverter="Color::from_raw_value({})" WriteConverter="{}.raw_value()" MinVersion="R2007" Comment="Represents the ACI color index of the "interference objects" created during the interfere command." />
<Variable Name="INTERFEREOBJVS" Code="345" Type="Handle" Field="interference_object_visual_style_pointer" DefaultValue="Handle::empty()" ReaderOverride="pair.as_handle()?" WriteConverter="&{}.as_string()" DontWriteDefault="true" MinVersion="R2007" Comment="Hard-pointer ID to the visual stype for interference objects." />
<Variable Name="INTERFEREVPVS" Code="346" Type="Handle" Field="interference_view_port_visual_style_pointer" DefaultValue="Handle::empty()" ReaderOverride="pair.as_handle()?" WriteConverter="&{}.as_string()" DontWriteDefault="true" MinVersion="R2007" Comment="Hard-pointer ID to the visual styoe for the viewport during interference checking." />
<Variable Name="CSHADOW" Code="280" Type="ShadowMode" Field="shadow_mode" DefaultValue="ShadowMode::CastsAndReceivesShadows" ReadConverter="enum_from_number!(ShadowMode, CastsAndReceivesShadows, from_i16, {})" WriteConverter="{} as i16" MinVersion="R2007" Comment="Shadow mode for a 3D object." />
<Variable Name="SHADOWPLANELOCATION" Code="40" Type="f64" Field="shadow_plane_z_offset" DefaultValue="0.0" MinVersion="R2007" Comment="Location of the ground shadow plane. This is a Z axis ordinate." />
<!-- Misc. R10 variables -->
<Variable Name="AXISMODE" Code="70" Type="bool" Field="axis_on" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MaxVersion="R10" Comment="Axis on." />
<Variable Name="AXISUNIT" Code="-2" Type="Vector" Field="axis_tick_spacing" DefaultValue="Vector::zero()" MaxVersion="R10" Comment="Axis X and Y tick spacing." />
<!-- The following variables are in the header in R10 and lower but in the VPORT table in R11 and later -->
<Variable Name="FASTZOOM" Code="70" Type="bool" Field="fast_zoom" DefaultValue="true" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MaxVersion="R10" Comment="Fast zoom enabled." />
<Variable Name="GRIDMODE" Code="70" Type="bool" Field="grid_on" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MaxVersion="R10" Comment="Grid mode on." />
<Variable Name="GRIDUNIT" Code="-2" Type="Vector" Field="grid_spacing" DefaultValue="Vector::new(1.0, 1.0, 0.0)" MaxVersion="R10" Comment="Grid X and Y spacing." />
<Variable Name="SNAPANG" Code="50" Type="f64" Field="snap_rotation_angle" DefaultValue="0.0" MaxVersion="R10" Comment="Snap grid rotation angle." />
<Variable Name="SNAPBASE" Code="-2" Type="Point" Field="snap_base_point" DefaultValue="Point::origin()" MaxVersion="R10" Comment="Snap/grid/base point (in UCS)." />
<Variable Name="SNAPISOPAIR" Code="70" Type="SnapIsometricPlane" Field="snap_isometric_plane" DefaultValue="SnapIsometricPlane::Left" ReadConverter="enum_from_number!(SnapIsometricPlane, Left, from_i16, {})" WriteConverter="{} as i16" MaxVersion="R10" Comment="Isometric plane." />
<Variable Name="SNAPMODE" Code="70" Type="bool" Field="snap_on" DefaultValue="false" ReadConverter="as_bool({})" WriteConverter="as_i16({})" MaxVersion="R10" Comment="Snap mode on." />
<Variable Name="SNAPSTYLE" Code="70" Type="SnapStyle" Field="snap_style" DefaultValue="SnapStyle::Standard" ReadConverter="enum_from_number!(SnapStyle, Standard, from_i16, {})" WriteConverter="{} as i16" MaxVersion="R10" Comment="Snap style." />
<Variable Name="SNAPUNIT" Code="-2" Type="Vector" Field="snap_spacing" DefaultValue="Vector::new(1.0, 1.0, 0.0)" MaxVersion="R10" Comment="Snap grid X and Y spacing." />
<Variable Name="VIEWCTR" Code="-2" Type="Point" Field="view_center" DefaultValue="Point::origin()" MaxVersion="R10" Comment="XY center of current view on screen." />
<Variable Name="VIEWDIR" Code="-3" Type="Vector" Field="view_direction" DefaultValue="Vector::z_axis()" MaxVersion="R10" Comment="Viewing direction (direction from target in WCS)." />
<Variable Name="VIEWSIZE" Code="40" Type="f64" Field="view_height" DefaultValue="1.0" MaxVersion="R10" Comment="Height of view." />
</Spec>