OakPDT Drawing

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
Line 186: Line 186:
 
|}
 
|}
  
 +
 +
== Drawing definition ==
 +
{| class="wikitable" width="50%"
 +
|-
 +
! Code !! Description
 +
|-
 +
| 0 || Push name*
 +
|-
 +
| 1
 +
|-
 +
| 2
 +
|-
 +
| 3
 +
|-
 +
| 5 || +
 +
|-
 +
| 6 || -
 +
|-
 +
| 7 || unary -
 +
|-
 +
| 8 || Start
 +
|-
 +
| 9
 +
|-
 +
| 10
 +
|-
 +
| 11
 +
|-
 +
| 12
 +
|-
 +
| 13
 +
|-
 +
| 14
 +
|-
 +
| 15
 +
|-
 +
| 16 || To
 +
|-
 +
| 17
 +
|-
 +
| 18 || Centre of
 +
|-
 +
| 19 || Clockwise
 +
|-
 +
| 20 || Anti-clockwise
 +
|-
 +
| 21 || Radius
 +
|-
 +
| 22
 +
|-
 +
| 23
 +
|-
 +
| 24 || *
 +
|-
 +
| 25 || /
 +
|-
 +
| 26 || ^
 +
|-
 +
| 27 || sqrt
 +
|-
 +
| 28 || sin
 +
|-
 +
| 29 || cos
 +
|-
 +
| 30 || tan
 +
|-
 +
| 31 || asin
 +
|-
 +
| 32 || acos
 +
|-
 +
| 33 || atan
 +
|-
 +
| 34 || atan2
 +
|-
 +
| 35 || abs
 +
|-
 +
| 36 || degrees
 +
|-
 +
| 37 || radians
 +
|-
 +
| 38 || Push integer*
 +
|-
 +
| 39 || Push real*
 +
|-
 +
| 40 || Eval ID
 +
|-
 +
| 41 || Arc from
 +
|-
 +
| 42 || Arc to
 +
|-
 +
| 43 || Push byte*
 +
|-
 +
| 44 || Line tangent to 2 circles
 +
|-
 +
| 45 || Intersection of 2 lines
 +
|-
 +
| 46 || Intersection of line and circle
 +
|-
 +
| 47 || Construction line from 2 points
 +
|-
 +
| 48 || Angled construction line
 +
|-
 +
| 49 || Construction line tangent to 2 circles
 +
|-
 +
| 50 || Parallel construction line
 +
|-
 +
| 51 || Perpendicular construction line
 +
|-
 +
| 52 || Centre of construction circle
 +
|-
 +
| 53 || Construction circle radius
 +
|-
 +
| 54 || Construction circle diameter
 +
|-
 +
| 55 || Intersection of 2 circles
 +
|-
 +
| 56 || Circle tangent to 2 lines
 +
|-
 +
| 57 || Line tangent from point to circle
 +
|-
 +
| 58
 +
|-
 +
| 59 || Distance between 2 points
 +
|-
 +
| 61 || Push X coordinate*
 +
|-
 +
| 62 || Push Y coordinate*
 +
|-
 +
| 63 || Point at centre of construction circle
 +
|-
 +
| 64 || Line normal from point to circle
 +
|-
 +
| 65 || Point on line at distance
 +
|-
 +
| 66 || Circle tangent to 2 circles
 +
|-
 +
| 67 || Parallel construction line at distance
 +
|-
 +
| 68 || Circle tangent to line and circle
 +
|-
 +
| 69 || Line normal to 2 circles
 +
|-
 +
| 70 || 3 point circle
 +
|-
 +
| 71 || Circle tangent to line
 +
|-
 +
| 72 || Line relative to line
 +
|-
 +
| 73 || Polar line
 +
|-
 +
| 74 || Point at end of line
 +
|-
 +
| 75 || Line bisects 2 lines (mk1)
 +
|-
 +
| 76 || Mid point
 +
|-
 +
| 77 || Perpendicular bisector
 +
|-
 +
| 78 || Point at start of line
 +
|-
 +
| 79 || 3 point arc
 +
|-
 +
| 80 || Point at centre of arc
 +
|-
 +
| 81 || Angle dimension
 +
|-
 +
| 82 || %
 +
|-
 +
| 83 || Int/
 +
|-
 +
| 84 || trunc
 +
|-
 +
| 85 || round
 +
|-
 +
| 86 || log
 +
|-
 +
| 87 || log10
 +
|-
 +
| 88 || exp
 +
|-
 +
| 89 || Point at distance around circle
 +
|-
 +
| 90 || Angle between 2 lines
 +
|-
 +
| 91 || Line bisects 2 lines (mk2)
 +
|-
 +
| 92 || angle from 3 points
 +
|-
 +
| 93 || Circle info
 +
|-
 +
| 94 || Relative point
 +
|-
 +
| 95 || Call function
 +
|-
 +
| 96 || Function return
 +
|-
 +
| 97 || Push function parameter
 +
|-
 +
| 98 || Ignore string*
 +
|-
 +
| 99 || Push string*
 +
|-
 +
| 100 || Random number
 +
|-
 +
| 101 || Point distance on circle
 +
|-
 +
| 102 || Point at end of text
 +
|-
 +
| 103 || Polar point
 +
|-
 +
| 104 || Point at start of arc
 +
|-
 +
| 105 || Point at end of arc
 +
|-
 +
| 106 || Angle from 2 points
 +
|-
 +
| 107 || Point between 2 points
 +
|-
 +
| 254 || Return
 +
|-
 +
| 255 || End of symbol
 +
|-
 +
|}
  
 
[[Category:RISC OS]]
 
[[Category:RISC OS]]

Revision as of 11:14, 7 November 2022

File Format
Name OakPDT Drawing
Ontology

Overview

OakPDT is a 2D parametric CAD system for RISC OS. On RISC OS systems, files in this format typically have a filetype of CAD ("PDT Dwg").

Format details

File Header
0 Byte Major version number of the file format (always 1)
1 Byte Minor version number of the format
  • 2 corresponds to OakPDT v2.50 (17 November 1990)
2 Null-terminated string The_Design_System or Oak_P_D_T_Drawing
20 Integer Number of symbols (s)
24 Array s symbol table entries
Integer Size of drawing definition (v)
Array v bytes
Byte Paper size
Struct Window definition
Struct Grid information
Struct Text information
Struct Dimension information
Struct Line style information
Integer Number of scalars (n)
Array n scalar table entries
Struct Error information
Struct Layer information
Double Dimension scale (only in v1.1 or later)
Integer Number of functions (n) (only in v1.2 or later)
Array n function table entries (only in v1.2 or later)
Symbol table entry
0 Byte Data type
1 Byte Pen colour
  • In v1.2 or later, the symbol is deleted if the pen colour has bit 5 set, and the lower four bits are ANDed with %1111.
2 Byte Layer number
  • In v1.0 and v1.1, the symbol is deleted if the layer number is 16.
3 Byte Line type
4 Integer Address in drawing definition
8 Integer Length in drawing definition (ignored in later versions)
Window definition
0 Double Left X coordinate
8 Double Bottom Y coordinate
16 Double Right X coordinate
24 Double Top Y coordinate
Grid information
0 Double X spacing
8 Double Y spacing
16 Double X angle
24 Double Y angle
32 Integer Grid snap
36 Integer Parametric grid snap
Text information
0 Double Text width
8 Double Text height
16 Double Butterfly limit
24 Integer Text precision
Dimension information
0 Double The text width for dimensions.
8 Double The text width for dimensions.
16 Double The arrow head size.
24 Double Clearance gap
32 Integer The current dimension style, which can be one of the following values:
  • 0 for internal dimensions.
  • 1 for external left dimensions.
  • 2 for external right dimensions.
  • 3 for external dimensions.
36 Integer Use arrow heads for dimensions instead of slashes.
40 Integer Are dimension tolerances enabled?
44 Integer The dimension precision.
Line style information
0 Integer Definition of user-defined line style 1.
4 Integer Definition of user-defined line style 2.
8 Integer Definition of user-defined line style 3.
12 Integer Definition of user-defined line style 4.
Scalar table entry
0 Integer The symbol number of the scalar.
4 Null-terminated string The name of the scalar.
Error information
0 Integer A value associated with the last error. The exact purpose depends on the identifier.
4 Null-terminated string The identifier of the last error to occur.
Layer information (v1.0 and v1.1)
0 Array 16 bytes containing the status of each layer.
  • If bit 0 is set then the layer is on.
  • If bit 1 is set then the layer is locked.
16 Array 16 bytes containing the default pen colour for each layer.
32 Byte The active current layer.
33 Array 10 bytes mapping each pen colour to a 16 colour palette entry.
Layer information (v1.2)
0 Array 64 bytes containing the status of each layer.
  • If bit 0 is set then the layer is on.
  • If bit 1 is set then the layer is locked.
64 Array 64 bytes containing the default pen colour for each layer.
128 Byte The active current layer.
129 Byte The active points layer.
130 Byte The active construction layer.
131 Array 10 bytes mapping each pen colour to a 16 colour palette entry.
Function table entry (v1.2 or later)
0 Null-terminated string The name of the function.
Integer The number of parameters.
Integer The address of the function in the definition block.


Drawing definition

Code Description
0 Push name*
1
2
3
5 +
6 -
7 unary -
8 Start
9
10
11
12
13
14
15
16 To
17
18 Centre of
19 Clockwise
20 Anti-clockwise
21 Radius
22
23
24 *
25 /
26 ^
27 sqrt
28 sin
29 cos
30 tan
31 asin
32 acos
33 atan
34 atan2
35 abs
36 degrees
37 radians
38 Push integer*
39 Push real*
40 Eval ID
41 Arc from
42 Arc to
43 Push byte*
44 Line tangent to 2 circles
45 Intersection of 2 lines
46 Intersection of line and circle
47 Construction line from 2 points
48 Angled construction line
49 Construction line tangent to 2 circles
50 Parallel construction line
51 Perpendicular construction line
52 Centre of construction circle
53 Construction circle radius
54 Construction circle diameter
55 Intersection of 2 circles
56 Circle tangent to 2 lines
57 Line tangent from point to circle
58
59 Distance between 2 points
61 Push X coordinate*
62 Push Y coordinate*
63 Point at centre of construction circle
64 Line normal from point to circle
65 Point on line at distance
66 Circle tangent to 2 circles
67 Parallel construction line at distance
68 Circle tangent to line and circle
69 Line normal to 2 circles
70 3 point circle
71 Circle tangent to line
72 Line relative to line
73 Polar line
74 Point at end of line
75 Line bisects 2 lines (mk1)
76 Mid point
77 Perpendicular bisector
78 Point at start of line
79 3 point arc
80 Point at centre of arc
81 Angle dimension
82  %
83 Int/
84 trunc
85 round
86 log
87 log10
88 exp
89 Point at distance around circle
90 Angle between 2 lines
91 Line bisects 2 lines (mk2)
92 angle from 3 points
93 Circle info
94 Relative point
95 Call function
96 Function return
97 Push function parameter
98 Ignore string*
99 Push string*
100 Random number
101 Point distance on circle
102 Point at end of text
103 Polar point
104 Point at start of arc
105 Point at end of arc
106 Angle from 2 points
107 Point between 2 points
254 Return
255 End of symbol
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox