TPE file format
Last reviewed version: 2.18In order to facilitate easy import og geometry generated or otherwise obtained from other programs, scripts, or manual modelling, AquaEdit can also import a file format called .TPE or Point-To-Point files. These files follow a very simple format based on two pairs of xyz coordinates the create a line segment. It also has some functionality to create components, set names of components, and to load files from the library with component properties.
Description of .tpe file format
Elements
The basics of a .tpe file is two sets of coordinates represented by 6 numbers. X, Y, Z of the first node and Z, Y, Z of the 2nd node. At the most basic level, this is all a .tpe file needs to contain. Two sets of coordinates always represents one line, and the number can be placed after each other with spaces in between.
Example:
0 0 0 1 1 1
Creates one line from (0, 0, 0) to (1, 1, 1).
Example:
0 0 0 1 1 1 2 2 2 3 3 3
Creates two lines. One from (0, 0, 0) to (1, 1, 1) and one from (2, 2, 2) to (3, 3, 3). In these cases line splitting does not matter.
Components
The lines can be divided into components, either using “***” which creates a new, unnamed truss component named “Imported data (number in the sequence)”. This command can be interleaved anywhere.
Example:
0 0 0 1 1 1 *** 2 2 2 3 3 3
Creates two components, one implicit called “Imported data” for the first element, and “Imported data (1)” for the 2nd element. In addition to this command there is also a command to insert a named component using “###”. This command requires a line break after the name of the component.
Example:
0 0 0 -10 -10 -10 ### Test1
1 1 1 10 10 10
Creates two components, one called “Imported data” for the first element, and one called Test1 with a line from (1, 1, 1) to (10, 10, 10) in it. Note how this requires a line break after the component name in order to function correctly, also note that “(“ and “)” are reserved letters and cannot be used in the component name.
Component type
When using ### to create components one can also specify the type of the component, this is done by putting the type of the component in parentheses behind it, like (truss), (beam), or (membrane)
Example:
### Test2 (beam)
10 10 10 50 50 50
50 50 50 100 100 100
This creates a component named “Test2” of type beam with two lines (10, 10, 10) to (50, 50, 50) and (50, 50, 50) to (100, 100, 100).
Library integration
When specifying the type of the component one can also optionally choose a template from the library to copy the component properties. This is done by specifying the name of the library template after the component type, separated by a comma. Note that component type must be supplied for AquaEdit to find the correct library. The name for the library template is the name set in the template component itself, which can be different from the filename of the template.
Example:
### Test2 (truss,LibraryItem)
10 10 10 50 50 50
50 50 50 100 100 100
Accessing library items in sub folders can be done as a normal path, using / to enter into the directory. If LibraryItem is in the folder “ropes” under trusses, the correct way to access this is:
Example:
### Test2 (truss,ropes/LibraryItem)
10 10 10 50 50 50
50 50 50 100 100 100
This creates a component called “Test2” of type truss, and applies the library template called LibraryItem, if it can find it, from the truss library on the PC.
DOF
Translational degrees of freedom can also be specified using underscore (_) in front of the number. There must not be any spaces between them. The last overridden DOF will always be used.
Rotational degrees of freedom can be specified using star (*). Note that there cannot be any spaces, and if both translational and rotational is specified, the translational must be specified first
Example:
### Test1
_1 _1 _1 10 10 10
1 1 1 -1 -1 -1
5 5 5 _*15 _*15 _*15
This creates the following lines, one from (1,1,1) to (10,10,10). The node at (1,1,1) will have all three translational DOFs turned on. The 2nd line from (1,1,1) to (-1,-1,-1) will have its (1,1,1) node merged with the previous element, and since there are no DOF overrides on this line the node will continue to have all three translational DOFs turned on. A line will also be made from (5, 5, 5) to (15, 15, 15), the last node will have all its degrees of freedom locked.
Divide line
Using the tilde (~) a line can be set to divided into multiple segments.
Example:
0 0 0 ~10 100 0 0
This will create a line from (0, 0, 0) to (100, 0, 0) and it will be split into 10 segments. Note that the nodes in between the two endpoints cannot be assigned properties.
Point load
Using the percentage symbol (%) a pointload can be assigned to a node. It takes a single number following the % with no spaces. This value becomes the Z force (in Newton) of the pointload
Example:
%50 0 0 0 %10 100 0 0
The above example will create a line from (0, 0, 0) to (100, 0, 0) and a 50 N in the Z direction pointload will be added to the first node, and a 10 N in the Z direction pointload on the 2nd node.
Continuation
Instead of having to specify every node twice when creating longer segments, the hash symbol (#) can be used to specify using the last node position instead.
Example:
0 0 0 # 0 10 0 # 10 10 0 # 10 0 0 # 0 0 0
This example creates a 10m by 10m square, from (0, 0, 0) to (0, 10, 0) to (10, 10, 0) to (10, 0, 0) and back to (0, 0, 0)
Example .tpe file
0 0 0 1 1 1
***
0 0 0 -10 -10 -10
### Test1
_1 _1 _1 10 10 10
### Test2 (truss,LibraryItem)
10 10 10 50 50 50
50 50 50 100 100 100
### Test3 (beam,LibraryItem2)
100 100 100 1000 1000 1000
### Verification
5 5 0 _10 _5 _0
10 5 0 *20 *5 *0
20 5 0
~10
%100
_*100 _*5 _*0
#
~5
100 100 0
#
~5
5 100 0
#
~5
5 5 0