OCAD 11 Dateiformat

Aus OCAD 11 Wiki - Deutsch
Zur Navigation springen Zur Suche springen
Die druckbare Version wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.

Version: 2012-02-09

General

This is a description of the file format of OCAD 11 files.

Be aware that this is an internal format and may change in future versions.

Data types used

OCAD is written in 32-bit Delphi and this description uses the names for the data types as they appear in Delphi. However the same data types are available in other development systems like C++.

Integer 32-bit signed integer
SmallInt 16-bit signed integer
Word 16-bit unsigned integer
WordBool 16-bit boolean
String[x]

Pascal-style string. The first byte contains the number of characters followed by the characters. The string is not zero-terminated. The maximum number of characters is x. It occupies x + 1 bytes in the file.

Double 64-bit floating point number
TDPoly A special data type (64-bit) used for all coordinates and text. It is defined as

TDPoly = record
x, y: integer;
end;

The lowest 8 Bits are used to mark special points:

Marks for the x-coordinate:
1: this point is the first bezier curve point
2: this point is the second bezier curve point
4: for double lines: there is no left line between this point and the next point
8: this point is a area border line or a virtual line gap

Marks for y-coordinate:
1: this point is a corner point
2: this point is the first point of a hole in an area
4: for double lines: there is no right line between this point and the next point
8: this point is a dash point

The upper 24 bits contain the coordinate value measured in units of 0.01 mm.

Note: all file positions are in bytes starting from the beginning of the file.

File Header

OCAD files start with a file header.

TFileHeader = record // Size = 48 Byte
OCADMark: SmallInt; Example
FileType: Byte; Example
FileStatus: Byte; Example
Version: SmallInt; Example
Subversion: Byte; number of subversion (0 for 10.00, 1 for 10.1 etc.)
SubSubversion: Byte; number of subsubversion (0 for 10.0.0, 1 for 10.0.1)
FirstSymbolIndexBlock: integer; file position of the first symbol index block
ObjectIndexBlk: integer; file position of object index block -> TObjectIndexBlock // max 65536 * 256 objects
Example Example
Example Example

TFileHeader = record // Size = 48 Byte :OCADMark: SmallInt; // 3245 (hex 0cad) :FileType: Byte; // File type // 0: normal map // 1: course setting project // 3: OCAD 8 course setting project :FileStatus: Byte; // Not used :Version: SmallInt; // 10 :Subversion: Byte; // number of subversion (0 for 10.00, 1 for 10.1 etc.) :SubSubversion: Byte; // number of subsubversion (0 for 10.0.0, 1 for 10.0.1) :FirstSymbolIndexBlock: integer; // file position of the first symbol index block :ObjectIndexBlk: integer; // file position of object index block -> TObjectIndexBlock // max 65536 * 256 objects Res0: integer; // Not used Res1: integer; // Not used Res2: longint; // Not used Res3: longint; // Not used FirstStringIndexBlk: longint; // file position of string index block -> TStringIndexBlock // max 256 strings FileNamePos: integer; // file position of file name, used for temporary files only FileNameSize: integer; // size of the file name, used for temporary files only Res4: longint; // Not used end;

Symbols

Objects

Parameter Strings