D3PLOT 22.1

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>
<file version>

<saved id>
<title>

string
integer

integer
string

is the programme name, here D3PLOT
is the version number of this file. This commences at 0 for release 11.

is the saved property id, starting at 0 for "current".
is an optional title. At present this will be ignored.

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.

*PROP_FAMILY
<family id>

<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>
<Distance>

float

float

float

integer
float

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)
The perspective distance (from eye position to model centre)

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.