Previous: , Up: Sections   [Contents][Index]


5.23 EXTRAS entities section

Before R13 we had no objects, just the 5-10 tables, and the entities divided into 3 sections. The entities, the blocks and the extras. Blocks just contains the entities from each BLOCK to the ENDBLK entity.

Extras contain entities which had no room in the original section, e.g. when closing a polyline, which needs one additional byte. Thus the original entity is replaced by an undocumented JUMP entity, which gives the offset into the EXTRAS section, until a JUMP in the EXTRAS jumps back to the next original entity.

See e.g. r10/entities.dwg

The JUMP [31] replaces the POLYLINE_2D entity which got later closed. An open POLYLINE_2D needs size 8, but closed 9 bytes. Hence they added the new closed replacement to the extras section at offset 0, index [66], and added another JUMP [67] back to the next original entity. Here it jumps back to the VERTEX_2D [32] at offset 0x84f.

  type: 18 [RCd]
  Add entity JUMP [31] Decode entity JUMP
  ===========================
  Entity number: 31, Type: 18, Addr: 847
  flag_r11: 0x0 [RC 0]
  size: 8 [RS]
  jump_address_raw: 0x80000000 [RLx 0]
  jump_entity_section: DWG_EXTRA_SECTION
  jump_address: 0x0

  type: 20 [RCd]
  Add entity VERTEX_2D [32] Decode entity VERTEX_2D
  ===========================
  Entity number: 32, Type: 20, Addr: 84f
  flag_r11: 0x0 [RC 0]
  size: 24 [RS]
  layer: 0 [H(RSd) 8]
  opts_r11: 0x0 [RSx 0]
  point: (5.500000, 7.500000) [2RD 10]

  ....

  extras entities: (0x10c0-0x10d1 (0), size 17)
  ==========================================
  type: 19 [RCd]
  Add entity POLYLINE_2D [66] Decode entity POLYLINE_2D
  ===========================
  Entity number: 66, Type: 19, Addr: 10c0
  flag_r11: 0x80 [RC 0]
            HAS_ATTRIBS(0x80)
  size: 9 [RS]
  layer: 0 [H(RSd) 8]
  opts_r11: 0x1 [RSx 0]
            HAS_FLAG(0x1)
  flag: 0x1 [RC 70]
        CLOSED(0x1)

  type: 18 [RCd]
  Add entity JUMP [67] Decode entity JUMP
  ===========================
  Entity number: 67, Type: 18, Addr: 10c9
  flag_r11: 0x0 [RC 0]
  size: 8 [RS]
  jump_address_raw: 0x84f [RLx 0]
  jump_entity_section: DWG_ENTITY_SECTION
  jump_address: 0x84f
  ==========================================
  extras entities: end

The entity iterator knows about these jumps. The DXF structure resolves those jumps, and inserts the replaced entities.


Previous: Tables, Up: Sections   [Contents][Index]