The Format of the Saved Properties (.prp) File
The Format of the Saved Properties (.prp) File
The saved properties file (.prp) is intended to be both programme-independent and model independent, so that attributes of a model's appearance can be shared between different programmes and variants of the same model. In particular the properties file can be shared between D3PLOT and PRIMER.
The file format is ASCII, so it is human readable and can be manipulated in a text editor, and its format is similar to Ansys LS-DYNA keyword format in that:
- Each data blocks begins with a "Keywords" that have an asterisk * in column 1.
- Any number of comment lines may be inserted, and they start with $ , % or # in column 1.
However one significant difference is that all data is in free format, with no restrictions on field width or spacing between columns of data, so data will be formatted as:
| string | a string of some number of characters |
| integer | either a decimal number, or a hexadecimal one if it starts "0x..." |
| float | a floating point number |
A properties file contains the following blocks:
| Header name | Status | Description | Notes |
| *PROPERTIES | Required | Defines the parameters of the following property state | This sequence of blocks is repeated for each saved property. |
| *PROP_MASKS | Required | Describes the format of the data to follow | |
| *PROP_FAMILY | Optional | Designates the family number of an adaptively meshed analysis. May be omitted for conventional analyses. | |
| *PROP_DATA | Required | Contains the actual property data for model items | |
| *PROP_SWITCHES | Optional | Contains information about "entity" panel settings | |
| *PROP_VIEW | Optional | Contains information about the current view settings | |
| *PROP_EXPLODE | Optional | Contains information about the current explode part vectors | |
| *PROP_END | Required | Acts as an "end of property definition" marker | |
|
The following two blocks are written in D3PLOT property files only and are not strictly "property" data. They are provided for backwards compatibility with the older style of properties file used prior to D3PLOT release 11. If present these two sections only occur once, at the end of the file. |
|||
| *EXTERNAL_DATA | Optional | Contains "external" data for "blob plots" as described in External Data | If present each of these sections appears once only. |
| *MODEL_TRANSFORM | Optional | Contains "transformation" data as described in TRANSFORM | |
Each block is described in more detail below.
For each saved property data blocks should appear in the following order:
*PROPERTIES
<code> <file version>
<saved id> <title>
|
<code>
<saved id>
|
string
integer
|
is the programme name, here D3PLOT
is the saved property id, starting at 0 for "current".
|
|
This header block describes the basic parameters of the new saved property entry.
*PROP_MASKS
row 1: <keyword> <word><data
mask>
row 2: <keyword><word> <data
mask>
: :::
row n: <keyword><word> <data
mask>
|
<keyword>
<column> <mask> |
string
integer integer |
One of a known series of mask names.
The column number on the line, starting at 1. Integer or hexadecimal value giving bits used. |
The purpose of this block is to allow different programmes, which will almost certainly store information in different formats, to stipulate how they are presenting data, and also to specify how many columns (words) of data will be supplied in the *PROP_DATA block below.
You don't need to understand this block unless you plan to generate property files yourself, or to read D3PLOT-generated property files into some other software. If this is the case please see " More about *PROP_MASKS " below.
|
<family id>
|
integer
|
The adaptively meshed family number, starting at 0,
for which the following *PROP_DATA information applies.
|
This header can be ignored except in the case of adaptively remeshed families which repeat the
*PROP_FAMILY
<family id>
*PROP_DATA
<data for family>
sequence for each family in the analysis. This is becase each family can have different numbers of nodes and elements.
*PROP_DATA
row 1: <item type> <start label><end label><word
#1><word #2>...<word #n>
row 2: <item type> <start label><end label><word
#1><word #2>... <word #n>
: ::::::
row n: <item type> <start label><end label><word
#1><word #2>...<word #n>
|
<item type>
<start label> <end label> <word #1> <word #2> <word #n> |
string
integer integer integer integer integer |
Item name, eg NODE, PART, etc
The first label in the range, or FIRST or ALL The end label in the range, or LAST. Omitted if the start label is ALL. The first word of data, ie column 1 The second word of data, ie column 2 The last word of data, ie column n |
The storage method here echoes the internal runlength-encoded format in which all items in the label range <start> ... <end> have the same property values.
ALL is used instead of <start> .. <end> labels when all items of the type share the same attributes.
FIRST is used in place of label <start> if this is the first item of its type, and LAST in place of label <end> if it is the last label. This is so that other models, perhaps with slightly different label ranges, will still apply the properties correctly.
Data words #1 to #n must be supplied for every item even if they do not contain any useful data, in which case they can be zero. The number of words expected on each line, #n, is inferred from the highest <column> entry in the preceding *PROP_MASKS block.
*PROP_SWITCHES
row 1: <item type> <drawn><labelled><named>
row 2:<item type> <drawn><labelled><named>
:::
:
row n: <item type> <drawn><labelled><named>
|
<item type>
<drawn> <labelled> <named> |
string
integer integer integer |
Item name, eg NODE, PART, etc
Whether this item is drawn Whether this item is labelled Whether this item is named |
This data block is optional: if omitted the "entity" panel settings will be left unchanged when the file is read.
Each data field <drawn>, <labelled>, <named> is, at its simplest, 1 for true and 0 for false. However within D3PLOT some item types have sub-keywords, and further bits can be used to denote the individual status of these.
*PROP_VIEW
Matrix row 1: <X cosine><Y cosine><Z
cosine>
Matrix row 2: <X cosine><Y cosine><Z
cosine>
Matrix row 3: <X cosine><Y cosine><Z
cosine>
Offsets:<X trans><Y
trans><Z trans>
Scale:<Scale factor>
Perspective:<On/off><Distance>
|
<X/Y/Z cosine>
<X/Y/Z trans> <Scale>
<On/off>
|
float
float float
integer
|
The X/Y/Z components of the unit cosines for that matrix row
The X/Y/Z component of the translations required to position the model in front of the eye position. The scale factor from model space to screen (4096 x 4096) space
Whether perspective is on (1) or off (0)
|
This data block is optional. If it is omitted the view will not be updated when the file is read.
*PROP_EXPLODE
Part ID <X component><Y component><Z
component>
Part ID
<X component><Y component><Z
component>
Part ID <X component><Y component><Z
component>
|
<Part ID> <X/Y/Z component |
Integer Float |
The part ID for that row of the table The X/Y/Z component of the translations required to position the part in its exploded position |
This data block is optional. If it is omitted the exploded part information will not be updated when the file is read.
*PROP_END
(This block has no data)
This block signifies the end of the current property definition.