Reconfigurer is similar to Data Listing (DATAL) in that it dumps out the state of the data.
The data can be dumped to either binary or text file. Using binary files is quickest.
Reconfigurer is faster than DATAL and is recommended if whole DBs or world level elements are to be transferred. DATAL or the copy facilities is recommended if lower level elements are to be transferred.


The fundamental modifications allowed are:
Element creation
Element deletion
Element copy
Element move
Attribute modification
Element creation
Element creation
Element deletion
Element deletion
Element copy
Element copy
Element move
Element move
Attribute modification
Attribute modification


Data Access Control (DAC) is the mechanism that protects information handled by the system from accidental or unauthorised manipulation.
The basic access control available is known as 'Team Owning Databases'. It implements access control on database level by simply giving the members of the team owning the database full access and others read-only to data held in particular databases.
A more sophisticated access control is implemented in the form of Access Control Rights (ACRs). ACR allows the administrator of the system to apply a more fine grained access control over the model. The following figure illustrates the DAC database hierarchy.

An ACR is defined through two entities:
A PEROP defines the access rights given for a number of pre-defined operations for one or more elements.
One or more ACRs may be assigned to a user granting and denying access to the model.
For a user to gain update access to a particular element two rules apply:
Management tools are available for DAC through the Admin module. Control of DAC is also available through Programmable Macro Language (PML).
A PEROP consists of three parts:
The PEROP may further restrict the elements it applies to by a qualifying condition. The qualifying conditions is an AVEVA E3D Design statement that should evaluate to true to qualify the PEROP.
The following operations are available through PEROPs
Each of these operations may be set to
Allow
The operation is permitted
Disallow
The operation is not permitted
Ignore
The PEROP does not define whether this operation is permitted or not
Allow
The operation is permitted
Disallow
The operation is not permitted
Ignore
The PEROP does not define whether this operation is permitted or not
Optionally the PEROP may further restrict which attributes it allows modification to by specifying a list of attributes that it either includes or excludes from allowing modification to.
The PEROP also holds the message that the system will issue if the PEROP denies attempted operation.
Allow
The operation is permitted
Disallow
The operation is not permitted
Ignore
The PEROP does not define whether this operation is permitted or not
A ROLE, which is a collection of rules called Permissible Operations (PEROPs).
A SCOPE, which defines to what part of the model the ROLE applies. The SCOPE may be an expression, for example, all ZONE WHERE (FUNC eq 'TEAMA')
A ROLE, which is a collection of rules called Permissible Operations (PEROPs).
A ROLE, which is a collection of rules called Permissible Operations (PEROPs).
A SCOPE, which defines to what part of the model the ROLE applies. The SCOPE may be an expression, for example, all ZONE WHERE (FUNC eq 'TEAMA')
A SCOPE, which defines to what part of the model the ROLE applies. The SCOPE may be an expression, for example, all ZONE WHERE (FUNC eq 'TEAMA')
At least one PEROP in a ROLE assigned to a USER must grant the update operation.
No one PEROP must explicitly deny the operation.
At least one PEROP in a ROLE assigned to a USER must grant the update operation.
At least one PEROP in a ROLE assigned to a USER must grant the update operation.
No one PEROP must explicitly deny the operation.
No one PEROP must explicitly deny the operation.
The Element it applies to
The operations which can be performed on those elements
Optionally the Attributes that may be modified.
The Element it applies to
The Element it applies to
The operations which can be performed on those elements
The operations which can be performed on those elements
Optionally the Attributes that may be modified.
Optionally the Attributes that may be modified.
Create
Modify
Delete
Claim
Issue
Drop
Output
Export
Copy
Create
Create
Modify
Modify
Delete
Delete
Claim
Claim
Issue
Issue
Drop
Drop
Output
Output
Export
Export
Copy
Copy

Allow
Disallow
Ignore


The following checks are applied to all modifications:
The claiming process is described in Claiming Elements.
Check access control
Check that the DB is open in write
Check that the element's LOCK flag is false
If a multiwrite Database (DB) then do a claim check, and claim if needed
Check access control
Check access control
Check that the DB is open in write
Check that the DB is open in write
Check that the element's LOCK flag is false
Check that the element's LOCK flag is false
If a multiwrite Database (DB) then do a claim check, and claim if needed
If a multiwrite Database (DB) then do a claim check, and claim if needed


The engineering integrity is always maintained for any database modification.
The integrity checks are applied below the database interface. Thus modifying the database is always safe whether done via PML commands or C#.
The checks are applied to individual attributes and element types. For example the OBST attribute can only ever be set to 0,1 or 2. AVEVA E3D Design will always check that this is the case prior to allowing the modification.


Elements may be created. They are always created one at a time, and may only be created at a legitimate point in the primary hierarchy.
On creation, a unique reference number will be assigned. The method by which the default reference number is generated is described in User Defined Hierarchies.
It is possible to create an element with a specified reference number, provided it is unused and valid for the Database (DB). This functionality is provided for certain specialized situations (such as recreating an exact copy of a DB, so that all references to elements from other DBs remain valid), and is not recommended for general use.
The attributes will be set to their default values. In some cases the default attribute values are cascaded down from the owning element.

User Defined Hierarchies
User Defined Hierarchies


Elements may be deleted. All elements below the deleted element in the primary hierarchy will also be deleted.
Reference numbers of deleted elements are never reused.


Elements may be copied. There are options to copy a single element or an element and all its descendants. Elements may be copied between Databases (DBs). Any cross references entirely within the copied structure will be updated to point to the newly created elements.
Elements are always copied on top of an existing element of the same type.
There are various options on the copy command to allow:
Additional potential errors at create are:
The copied elements to be renamed according to a given criteria
Whether any attribute rules are to be rerun on the copied element. (Rules are described in Reconfigurer)
The copied elements to be renamed according to a given criteria
The copied elements to be renamed according to a given criteria
Whether any attribute rules are to be rerun on the copied element. (Rules are described in Reconfigurer)
Whether any attribute rules are to be rerun on the copied element. (Rules are described in Reconfigurer)
The element may not be copied to an element of a different type
The element may not be copied to an element of a different type
The element may not be copied to an element of a different type

Reconfigurer
Reconfigurer


Elements may be moved to a different point in the Database (DB) or to a different DB.
The Element and all its descendants will be moved.
If the element is moved to a different DB, then its reference number is changed. All reference attributes pointing to the moved structure will be updated.
Additional potential errors at move are:
The element is not allowed in the members list of the new owner
The element is not allowed in the members list of the new owner
The element is not allowed in the members list of the new owner


The following checks are applied when modifying attributes:
Sometimes modifying one attribute will actually cause a number of attributes to change. There are two main cases where this might happen:
The integrity of cross referenced attributes is maintained when one end of the connection is changed. Changing one end of a connection will also change the following:
In essence, changing one value may result in four elements being updated.
For example, consider the following:

After setting the CREF on /N1 to /B1, the end result is:


Effect of Modifications on Dynamic Rules

A dynamic rule will automatically respond to changes which affect the attributes referred to in the rule.
For example, we set a rule on YLEN of /MYBOX to be (YLEN OF /FRED * 2). Thus if YLEN on /FRED changes then YLEN on /MYBOX will be updated automatically. However there are reasons why the automatic propagation of dynamic rules may fail, as follows:
Note also that only static rules are not automatically updated. For these reasons there are commands to verify that rule results are up to date.


Information is provided on the handling of a session, for example, defining a session by saving or getting the work, creating a stamp, displaying the session history, setting a comparison date and merging changes.


Data is only saved to the database on demand. Similarly you will only see changes made by others on demand. In order to make changes visible to other users two steps must occur:
For most applications, the save-work/get-work actions are totally in the hands of the user.

Save work
Get work


When a savework is made a new session will be created on the database. The changed data will always be written to the end of the file. This represents the 'delta' from the previous session. Details such as date, user, session description are stored as part of the session data. There is always a pointer from the database header to the last session on the database.

Internally there is a linked list between sessions. It is worth reiterating that once a session is written, it will never be changed. Thus if a user is looking at session 19, then his view of the data will never change in any way regardless of any sessions created by other users. If you do want to see the changes made by others then you must do a 'Getwork'. 'Getwork' will always reposition you to view the latest session. Thus in the above example if a user originally looking at session 19 did a Getwork then he would now be looking at session 39.


The Database will preserve the full session history. Thus at any point it is possible to find out what was changed when and by whom. The system can report on changes down to the attribute level.
The list of facilities include:
The DIFF command can be used to report on changes. For example, if you were to modify a couple of attributes on an equipment, and add a new primitive, then the DIFF command could be used to report on the changes. The output from the command might be:
By default, the DIFF command will report the changes made by you in the current working session, that is to say, since the last savework. It is also possible to specify a given session number, a date and time, or a stamp (refer to Create a Stamp) in order to see the differences since then.
The OUTPUT command may be used to record changes since a given session. The Data Listing (DATAL) file will then contain the commands that reproduce the updates made since the given session. The file can then be read back in to reproduce the changes. This is convenient where bits of data have been copied between projects, and the copied data needs to be updated with changes made to the original.
Reverse changes can also be output. The DATAL file will then contain the commands that remove the updates made since the given session. This is a convenient way for restoring part of a model back to how it was at an earlier point.
 /VESS1
/VESS1 [=15752/201] has been modified
List member /EXTRACYL created
Comparing elements to an old session
Dataling out changes since a given session
Setting a comparison session
Creating a stamp
Various pseudo attributes
Comparing elements to an old session
Comparing elements to an old session
Dataling out changes since a given session
Dataling out changes since a given session
Setting a comparison session
Setting a comparison session
Creating a stamp
Creating a stamp
Various pseudo attributes
Various pseudo attributes
Local comparison for Database items
 /VESS1
/VESS1 [=15752/201] has been modified
Member list has changed
List member /EXTRACYL created
Description has changed
Old value= my description
New value= my new description
Area has changed
Old value= 999
New value= 100
/EXTRACYL [=15752/1326] has been created
2 changed elements found
Local comparison for Database items
 /VESS1
/VESS1 [=15752/201] has been modified
Local comparison for Database items
Member list has changed
List member /EXTRACYL created
Member list has changed
Description has changed
Old value= my description
New value= my new description
Description has changed
Area has changed
Old value= 999
New value= 100
Area has changed
/EXTRACYL [=15752/1326] has been created
2 changed elements found
/EXTRACYL [=15752/1326] has been created

Create a Stamp
Create a Stamp


It is often convenient to mark a set of Databases (DBs) at particular milestones in the project. The 'Stamp' functionality allows this. It is then straight forward to find out what has changed since the stamp, or to view the data as it was at that time.
Stamps can only be created within Admin.


Within AVEVA E3D Design a comparison date can be set. A convenient way of doing this is to use a stamp. However the comparison date may also be set to an explicit session on a particular extract. If the comparison session is on a different extract then the extract must be an ascendant of the current extract.
Any query may then be done at the old session using the 'OLD' keyword. for example:
This would return the value of XLEN at the comparison session.
There are a number of pseudo attributes that can be used to do comparisons. These are listed in the database reference manual.
Q OLD XLEN


As a result of storing all changes, AVEVA E3D Design databases will grow relatively quickly. You may compress a Database (DB) to reduce its size by merging multiple sessions together using the MERGE CHANGES command in Admin. You may compress all sessions, or a range of sessions.
Any sessions used in stamps will always be preserved. Thus before compressing a DB you should create stamps to preserve any comparison points that might be needed. Sessions 1,2 and the last session are also always preserved. Thus for the previous example, if you decide to do a MERGE CHANGES on a database having set a stamp on session 10, the resultant DB will look like:

It can be seen that as well as sessions 10, sessions 1,2 and 39 are kept. The changes in session 10 now hold the accumulated changes for sessions 3-10, and Session 39 actually holds the accumulated changes for sessions 11 to 39.
The MERGE CHANGES command is discussed in the ADMIN manual.

MERGE CHANGES


Database Constructor (Dabacon) DBs may be either 'UPDATE' or 'MULTIWRITE.
UPDATE DBs allow only one user to have write access at any given time, although multiple users may still have simultaneous read access.
MULTIWRITE DBs allow multiple simultaneous users with write and read access.


The Database employs two techniques to allow multiple writers.
A claiming mechanism - User must claim an element at the point of making a modification. This will lock the element preventing other users making modifications.
A Last Back Wins strategy- For some changes a 'last back win' strategy is used rather than claim locks. With this strategy two users may change the same element. Any changes are merged back in. The merging is done at the attribute level. If two users change the same attribute then the last save wins. Places where this strategy is used are:
Some connection attributes. for example, changing a TREF attribute on a branch does not require the BRANCH to be claimed.
Member lists containing primary elements are always merged back. For example, creating a ZONE below a SITE doe NOT require the SITE to be claimed,
Changes issued from variant extracts are always merged back in.
Dynamic rule linkage
Spatial map values
Some connection attributes. for example, changing a TREF attribute on a branch does not require the BRANCH to be claimed.
Some connection attributes. for example, changing a TREF attribute on a branch does not require the BRANCH to be claimed.
Member lists containing primary elements are always merged back. For example, creating a ZONE below a SITE doe NOT require the SITE to be claimed,
Member lists containing primary elements are always merged back. For example, creating a ZONE below a SITE doe NOT require the SITE to be claimed,
Changes issued from variant extracts are always merged back in.
Changes issued from variant extracts are always merged back in.
Dynamic rule linkage
Dynamic rule linkage
Spatial map values
Spatial map values


The level of claiming is at the 'primary' element level. Examples of primary element types are SITE, ZONE, EQUI, SUBE. Examples of non primary elements are primitives such as BOX. When you need to modify a non primary element then the first primary element up the hierarchy must be claimed out. For example, to modify a BOX, then the owning EQUI or SUBE must be claimed.
When working on multiwrite Databases (DBs), users may either explicitly claim elements to work on, or let the system implicitly claim elements for them. The implicit claim will occur at the point of making a modification.
There are a number of reasons why an element may not be claimed:
If a list of elements is claimed, and some in the list fail, then the remaining elements will still be claimed.


Having claimed an element, a user may release it, thus allowing others to change it.
An element may not be released if changes are outstanding. You must do a SAVEWORK first.
On leaving a module all elements will be released for that user.
If a list of elements is released, and some in the list fail, then the remaining elements will still be released.


Every time a claim/release is made the underlying Database (DB) is accessed. To minimize such access, as many elements as possible should be done in one go.


Potential Conflicts at SAVEWORK/GETWORK in a Multiwrite Environment

There are a number of potential problems which are not discovered until SAVEWORK or GETWORK.
If any error occurs at SAVEWORK or GETWORK then the entire operation is aborted.


Extracts are an extension of the multiwrite facilities.
The extra functionality offered by extracts is:
They allow long term claims, that means, elements are not released on module switch.
The issuing of data is separated from SAVEWORK.
A partial set of changes may be issued, rather than the whole lot.
A partial set of changes may be dropped, hence losing the changes.
Allows variants to be tried and maintained.
Allows a 'last back wins' when issuing from variants
Users may have their own private work space.
Users can use extracts to implement an approval/work cycle, so that. the issuing of data from one extract to another could correspond to given criteria being met. Other users could then read the approved data rather than the working data.
They allow long term claims, that means, elements are not released on module switch.
They allow long term claims, that means, elements are not released on module switch.
The issuing of data is separated from SAVEWORK.
The issuing of data is separated from SAVEWORK.
A partial set of changes may be issued, rather than the whole lot.
A partial set of changes may be issued, rather than the whole lot.
A partial set of changes may be dropped, hence losing the changes.
A partial set of changes may be dropped, hence losing the changes.
Allows variants to be tried and maintained.
Allows variants to be tried and maintained.
Allows a 'last back wins' when issuing from variants
Allows a 'last back wins' when issuing from variants
Users may have their own private work space.
Users may have their own private work space.
Users can use extracts to implement an approval/work cycle, so that. the issuing of data from one extract to another could correspond to given criteria being met. Other users could then read the approved data rather than the working data.
Users can use extracts to implement an approval/work cycle, so that. the issuing of data from one extract to another could correspond to given criteria being met. Other users could then read the approved data rather than the working data.


Extracts are created from existing multiwrite Databases (DBs). The existing DB then becomes the Master DB. Many extracts may be created off the same Master DBs. Extracts may also be created from other extracts. The term extract family is used to refer to all extracts created directly or indirectly off a Master DB. Example of an extract family:

In this extract family, three extracts were created below the Master DB. Two further extracts were then created below Extract1.
There may be up to 8000 extracts in an extract family.
Extracts may be included in an Multiple Database (MDB) as for any other DB. Two extracts from the same extract family cannot be included in the same MDB.


It is not be possible to:
COPY an extract
INCLUDE an extract from a foreign project without its parent extract being included first.
EXCLUDE an extract/DB unless all child extracts have been excluded.
COPY an extract
COPY an extract
INCLUDE an extract from a foreign project without its parent extract being included first.
INCLUDE an extract from a foreign project without its parent extract being included first.
EXCLUDE an extract/DB unless all child extracts have been excluded.
EXCLUDE an extract/DB unless all child extracts have been excluded.


An extract will have its own set of sessions. This is illustrated below:

In this example the extract Database (DB) was created when the Master DB had 19 sessions. The extract thus represents a branching of the model from session 19. Changes were then made to the Master and to the Extract. The Extract has had nine more sessions created (sessions 2-10). The Master has had 20 more sessions added (sessions 20 - 39).
Changes made to an extract can be flushed back to the Master DB. Similarly the extract may be refreshed with changes made to the Master.


When a 'MERGE CHANGE' operation is performed on a DB with extracts, all the lower extracts have to be changed to take account of this. Thus doing a 'MERGE CHANGE' on a DB with extracts should not be undertaken lightly. The opposite is not needed, i.e. MERGE CHANGES on a child does not require the parent extract to be merged.
The following restrictions apply to MERGE CHANGES:
To minimize the sessions preserved in (1) it is suggested that a bottom up approach is followed when doing 'MERGE CHANGES'.


In order to modify an element in an extract, the element must be claimed to the extract. The principals of extract claiming are exactly the same as standard claiming, i.e, the granularity of extract claims is at the level of primary elements.
Extract claims will work up through the extract levels, extract claiming as necessary, i.e, you need not do a separate claim for each level of extract.
For example, consider a three level extract as follows:

If a user does an extract claim to the Working Extract the following logic will be used:
Is element claimed out to WORKING already?
-if YES
do nothing
-if NO
Is element claimed to APPROVED extract?
-if NO
Claim from ASBUILT to APPROVED
Then claim from APPROVED to WORKING
-if YES-
Claim from APPROVED to WORKING
Is element claimed out to WORKING already?

-if YES

do nothing

-if NO

Is element claimed to APPROVED extract?

-if NO

Claim from ASBUILT to APPROVED

Then claim from APPROVED to WORKING

-if YES-

Claim from APPROVED to WORKING
The extract claim may fail for the same reasons that a user claim may fail, i.e.:
Unlike user claims, extract claims stay with the extract across SAVEWORKs.
If a list of elements is extract claimed, and some in the list fail, then the remaining elements will still be extract claimed.
Is element claimed out to WORKING already?
-if YES
do nothing
-if NO
Is element claimed to APPROVED extract?
-if NO
Claim from ASBUILT to APPROVED
Then claim from APPROVED to WORKING
-if YES-
Claim from APPROVED to WORKING
Another user/extract has the item claimed
The element is modified in a later version, hence a refresh is needed first.
Another user/extract has the item claimed
Another user/extract has the item claimed
The element is modified in a later version, hence a refresh is needed first.
The element is modified in a later version, hence a refresh is needed first.


Extract claims may be released in the same way as user claims.
An extract release will not be permitted if:
If a list of elements is extract released, and some in the list fail, then the remaining elements will still be extract released.


An extract is itself a multiuser Database (DB), thus more than one user may work on an extract. Standard user claims and releases are thus also applicable to extracts


Variants are like standard extracts except that there is no extract claiming of elements between the variant and its parent extract. Any elements may thus be modified. This has the advantage that many users can potentially change the same element at the same time in a different variant. The disadvantage is that conflicts are not discovered until the time of flush.
There are no restrictions on where variants are located in the extract tree, for example, variants may own other normal extracts or other variant extracts. If a variants owns standard extracts, then the variant acts as a root for subsequent extract claims.


The following operations are allowed:
Drop
This is the process of losing modifications done locally on an extract combined with the transfer of write extract back to the parent extract.
Partial Drop
This is the process of losing modifications done locally on a subset of elements, combined with the transfer of write extract back to the parent extract.
Issue
The local changes are copied to the parent extract, and the elements are released.
Flush
This term is used for issuing without doing a release.
Partial Issue
The Issuing of a subset of the modifications made in the current extract to the parent extract.
Refresh
The mechanism by which an extract is updated with changes made in the parent Database (DB).
Drop
This is the process of losing modifications done locally on an extract combined with the transfer of write extract back to the parent extract.
Partial Drop
This is the process of losing modifications done locally on a subset of elements, combined with the transfer of write extract back to the parent extract.
Issue
The local changes are copied to the parent extract, and the elements are released.
Flush
This term is used for issuing without doing a release.
Partial Issue
The Issuing of a subset of the modifications made in the current extract to the parent extract.
Refresh
The mechanism by which an extract is updated with changes made in the parent Database (DB).
The refresh functionality is needed since users work on a constant view of the parent extract DB. Thus they will not see other users' issues until they do a REFRESH. It is akin to the GETWORK functionality in a single multiwrite DB.
All flushing, issuing, releasing and dropping operations work on one level of extract only. A Refresh can be done all the way up the tree using just one command.
If an extract operation fails, then the entire operation is aborted.
Drop
This is the process of losing modifications done locally on an extract combined with the transfer of write extract back to the parent extract.
Partial Drop
This is the process of losing modifications done locally on a subset of elements, combined with the transfer of write extract back to the parent extract.
Issue
The local changes are copied to the parent extract, and the elements are released.
Flush
This term is used for issuing without doing a release.
Partial Issue
The Issuing of a subset of the modifications made in the current extract to the parent extract.
Refresh
The mechanism by which an extract is updated with changes made in the parent Database (DB).

Drop
Partial Drop
Issue
Flush
Partial Issue
Refresh


On issue or flush, changes made in an extract will be merged back to the parent extract.
The basic approach is that any changes made to the extract are applied to the parent extract, as shown below:

The granularity of this merge is at the attribute level, which means, two users can change different attributes on the same element and merge their changes together. If they modify the same attribute then a 'last back win' strategy is used.
AVEVA E3D Design makes sure that all merges are valid at the raw database level, so that, the data will be Database Integrity Checker (DICE) clean. However it is not possible to make sure that the data is consistent in engineering terms. Thus it is highly recommended that when variant data is flushed back, Data Consistency Checking Utility (DATACON) checks and Clasher checks are run on the resulting version.
The definition of the different sessions for issue and flush are:
Session on parent when Refresh was last done
From session on child extract
New session on parent
The definition of the different sessions for refresh are:
Session on parent when Refresh was last done
From session on child extract
New session on parent
The definition of the different sessions for drop are:
Session on parent when Refresh was last done
From session on child extract
New session on child
The drop command compares the elements that are NOT to be dropped and applies the changes to create a new session.
The same algorithm is used for SAVEWORK and GETWORK.
There are two exceptions to the merge criteria as follows:
Base Session
Session on parent when Refresh was last done
From Session
From session on child extract
To Session
New session on parent
Base Session
Session on parent when Refresh was last done
From Session
From session on child extract
To Session
New session on parent
Base Session
Session on parent when Refresh was last done
From Session
From session on child extract
To Session
New session on child
Note:
The standard flush and issue commands also do a refresh. This makes sure that there is a suitable base session for the next extract operation.

Base Session
From Session
To Session
Base Session
From Session
To Session
Base Session
From Session
To Session
Note
:


There are three ways of denoting deleted items for a partial operation.


For two way connections, it is often desirable to flush both ends of the connection in order to preserve engineering consistency. There are addition options that allow the connected items to be flushed.


Potential problems at issue and refresh are the same as for SAVEWORK and GETWORK on multiwrite DBs, i.e. there could be a name clash, or an owning element could be deleted. Such problems will need to resolved in the extract prior to issuing being allowed.
If doing a partial issue or flush or if issuing from an extract, then extra checks are applied as follows:
Where an element has not been claimed, then Drop can still be used to lose the local changes.
Where a non primary element has changed owner, then the old primary owner and the new primary owner must both be issued back at the same time.
If an element has been unnamed, and the name reused, then both elements must be flushed back together.
If an element and its owner have been created then:
1. if it is included in a partial flushback, then so must its owner.
if the owner is include in a partial drop, then so must the element itself
if an element and its owner have been deleted then:
1. if it is included in a partial drop, then so must it's owner.
if the owner is included in a partial flush, then so must it.
Where a non primary element has changed owner, then the old primary owner and the new primary owner must both be issued back at the same time.
Where a non primary element has changed owner, then the old primary owner and the new primary owner must both be issued back at the same time.
If an element has been unnamed, and the name reused, then both elements must be flushed back together.
If an element has been unnamed, and the name reused, then both elements must be flushed back together.
If an element and its owner have been created then:
If an element and its owner have been created then:
1. if it is included in a partial flushback, then so must its owner.
if the owner is include in a partial drop, then so must the element itself
1. if it is included in a partial flushback, then so must its owner.
if an element and its owner have been deleted then:
if an element and its owner have been deleted then:
1. if it is included in a partial drop, then so must it's owner.
if the owner is included in a partial flush, then so must it.
1. if it is included in a partial drop, then so must it's owner.
Note:
When a partial issue or drop is made there is no guarantee that the data is 'Engineering correct'. Users are advised to run Clasher and/or Datacon on the resultant version.

Note
:


A new session is created for every flush operation. Thus it is much better to flush a large number of elements in one go rather than flush them individually.


Global allows Databases (DBs) to be spread across different locations. Global propagates changes from one location to another. The Global daemon does the propagation.
With global, there may be copies of a database or extract at multiple locations, but only one copy may be writeable. A database is said to be primary at a given location if it is writeable there, and secondary if it is not. A DB may be made primary at any location.
Different extracts from the same extract family may be primary at different locations. This allows multiple different locations to modify the same DB.


Changes made to a primary database (DB) are propagated to the read only secondary DBs. The propagation algorithm just sends the new sessions. For example:

If this case the propagation algorithm will send the sessions 20 to 39 to the secondary location.


If the two extracts are primary at the same location, then the extract claim/release operations are the same as for non global projects. If the two extracts are primary at different locations then the claim/release goes via the daemon. For example:

The extract claim operation is thus asynchronous. You have to wait to discover if the claim succeeded or not.


If the two extracts are primary at the same location, then the flush operation is the same as for non global projects. If the two extracts are primary at different locations then the steps are as follows:

The steps are:
Step 2 could fail for normal reasons, e.g. a name clash. If so the primary child extract needs to be informed so that next time it uses the correct base session for comparison purposes. At the command level this is the 'EXTRACT FLUSH RESET' command.


In the Global environment MERGE CHANGES will only be allowed where all lower extracts are also primary on this location.


Information is provided on the undo/redo and Backtrack/rewind behavior within the session.


The AVEVA E3D Design database has a built in undo/redo capability. Applications may define a start/end transaction and wind back to the start of that transaction.
Internally this is implemented using 'micro' sessions. Each micro session represents the start of each transaction.
An undo can not be done across a SAVEWORK.


The system administrator may remove the last one or many sessions from the Database (DB).


This section covers aspects of database navigation. Many examples are given during a Model´session but are also relevant to the Draw module.


The database has a concept of current element. This is often referred to as the Current Element (CE). The current element is highlighted in the explorer. In the 3D view the current element is shown in a different colour.
Many Programmable Macro Language (PML) commands work on the current element.
The current element can be changed in the following ways:
By picking an element in the explorer
By picking an element in the 3D view
By typing an element name into the name box
By typing a navigation command at the command line
By picking an element in the explorer
By picking an element in the explorer
By picking an element in the 3D view
By picking an element in the 3D view
By typing an element name into the name box
By typing an element name into the name box
By typing a navigation command at the command line
By typing a navigation command at the command line


There is also a concept of a current position. The concept of current position is only used when creating elements or when navigating down to the next level.
By default the current position is before the first member.
This is described further in Climb Up.

Climb Up
Climb Up


Programmable Macro Language (PML) supports a Database Reference (DBREF) object. A DBREF object identifies an element in the AVEVA E3D Design database. There are various methods available on the DBREF object. The methods for a DBREF are described in the software customization manual.


There is a global Programmable Macro Language (PML) Database Reference (DBREF) variable called !!CE that tracks the database current element. This object may be used/queried at any time.


This is the simplest way of navigating around the database. Just enter the name of the element at the command line. A name is always preceded by a slash.
For example:
/PUMP99
/BRANCH2
/BRANCH2 will now be the CE.


Unnamed elements always have a constructed name. The constructed name consists of:
If the constructed name is given, that element will become the CE.
For example:
If the element is a UDET then the UDET name must be used instead of the system type.
For example:
the type and relative position in its owners list.
the OF keyword
the constructed name of its parent
the type and relative position in its owners list.
the type and relative position in its owners list.
the OF keyword
the OF keyword
the constructed name of its parent
the constructed name of its parent


The following syntax accesses the world element by name, type:


The reference number can always be used to navigate to an element.


The BACKREf attribute brings the back pointer reference for Reference Table Attributes and answer the question "what references me (ce)". The syntax is:
For example, standing on a Specific Component (SPCO) and querying for BACKREf (attname SPREF ) will return all elements referencing that SPCO.
Excluding the argument will list all Reference Table Attributes referencing Current Element (CE).
For example:
Q BACKREF [(ATTNAME att1 [, ATTNAME att2] )]
Q BACKREF( attname SPCO)
Q BACKREF


Specify a Relative Position in the Hierarchy

Relative navigation can be done using a number of commands as follows:
Climb up
Move within current level
Move to next lower level
Climb up
Climb up
Move within current level
Move within current level
Move to next lower level
Move to next lower level


The following syntax is valid:
OWNER
climb to owning element. The owning element becomes the Current Element (CE). The current position is then before the first member
END
climbs to owning element. The owning element becomes the CE. The current position is at the previous element
<Element type>
climb to element of that type. This element becomes the new CE. This leaves the current position at the immediate member element that was climbed through.
OWNER
climb to owning element. The owning element becomes the Current Element (CE). The current position is then before the first member
END
climbs to owning element. The owning element becomes the CE. The current position is at the previous element
<Element type>
climb to element of that type. This element becomes the new CE. This leaves the current position at the immediate member element that was climbed through.
For example, consider the following hierarchy:
If the CE is /MYBOX, then:
OWNER
The CE becomes /MYEQUI. The current position is now before the first member.
END
Also climbs to /MYEQUI, but leaves the current position at /MYBOX
EQUI
Also climbs to /MYEQUI, and leaves the current position at /MYBOX
SITE
Climbs to /MYSITE, and leaves the current position at /MYZONE
OWNER
The CE becomes /MYEQUI. The current position is now before the first member.
END
Also climbs to /MYEQUI, but leaves the current position at /MYBOX
EQUI
Also climbs to /MYEQUI, and leaves the current position at /MYBOX
SITE
Climbs to /MYSITE, and leaves the current position at /MYZONE

OWNER
climb to owning element. The owning element becomes the Current Element (CE). The current position is then before the first member
END
climbs to owning element. The owning element becomes the CE. The current position is at the previous element
<Element type>
climb to element of that type. This element becomes the new CE. This leaves the current position at the immediate member element that was climbed through.
OWNER
The CE becomes /MYEQUI. The current position is now before the first member.
END
Also climbs to /MYEQUI, but leaves the current position at /MYBOX
EQUI
Also climbs to /MYEQUI, and leaves the current position at /MYBOX
SITE
Climbs to /MYSITE, and leaves the current position at /MYZONE

OWNER
END
<Element type>
OWNER
END
EQUI
SITE


Next
Goes to next element in at current level
Next int
Goes to next nth element at current level
Next <element type>
Goes to next element of given type at current level
Next int <element type>
Goes to next nth element of given type at current level
Prev
Goes to prev element at current level
Prev int
Goes to prev nth element at current level
Prev <element type>
to previous element of given type at current level
Prev int<element type>
to previous nth element of given type at current level
First
Goes to first element at current level
First int
Goes to nth element at current level
First <element type>
Go to first element of given type
First int <element type>
Go to nth element of given type
Last
Go to last element at current level
Last int
Go to nth from last element at current level
Last <element type>
Go to last element of given type
Last int <element type>
Go to nth last element of given type
<element type> int
This is the same as ‘First int <element type>’
Next
Goes to next element in at current level
Next int
Goes to next nth element at current level
Next <element type>
Goes to next element of given type at current level
Next int <element type>
Goes to next nth element of given type at current level
Prev
Goes to prev element at current level
Prev int
Goes to prev nth element at current level
Prev <element type>
to previous element of given type at current level
Prev int<element type>
to previous nth element of given type at current level
First
Goes to first element at current level
First int
Goes to nth element at current level
First <element type>
Go to first element of given type
First int <element type>
Go to nth element of given type
Last
Go to last element at current level
Last int
Go to nth from last element at current level
Last <element type>
Go to last element of given type
Last int <element type>
Go to nth last element of given type
<element type> int
This is the same as ‘First int <element type>’
If a UDET, then the UDET type must be given.
The Current element is /MyCylC, as highlighted.
Moves CE to /MyBoxB
Moves CE to /MyCylD
Moves CE to /MyCylD
Moves CE to /MyBoxD

Moves CE to /MyRtorA
Moves CE to /MyCylB
Moves CE to /MyBoxA
Moves CE to /MyCylA

Moves CE to /MyBoxA
Moves CE to /MyCylA
Moves CE to /MyCylA
Moves CE to /MyCylC
This is the same as FIRST 2 BOX. Moves CE to /MyBoxB.

Moves CE to /MyBoxD
Moves CE to /MyCylD
Moves CE to /MyCylD
Moves CE to /MyCylB

Next
Goes to next element in at current level
Next int
Goes to next nth element at current level
Next <element type>
Goes to next element of given type at current level
Next int <element type>
Goes to next nth element of given type at current level
Prev
Goes to prev element at current level
Prev int
Goes to prev nth element at current level
Prev <element type>
to previous element of given type at current level
Prev int<element type>
to previous nth element of given type at current level
First
Goes to first element at current level
First int
Goes to nth element at current level
First <element type>
Go to first element of given type
First int <element type>
Go to nth element of given type
Last
Go to last element at current level
Last int
Go to nth from last element at current level
Last <element type>
Go to last element of given type
Last int <element type>
Go to nth last element of given type
<element type> int
This is the same as ‘First int <element type>’
NEXT
Moves CE to /MyBoxB
NEXT 3
Moves CE to /MyCylD
NEXT CYL
Moves CE to /MyCylD
NEXT 3 BOX
Moves CE to /MyBoxD
PREV
Moves CE to /MyRtorA
PREV 2
Moves CE to /MyCylB
PREV BOX
Moves CE to /MyBoxA
PREV 2 CYL
Moves CE to /MyCylA
FIRST
Moves CE to /MyBoxA
FIRST 2
Moves CE to /MyCylA
FIRST CYL
Moves CE to /MyCylA
FIRST 3 CYL
Moves CE to /MyCylC
BOX 2
This is the same as FIRST 2 BOX. Moves CE to /MyBoxB.
LAST
Moves CE to /MyBoxD
LAST 2
Moves CE to /MyCylD
LAST CYL
Moves CE to /MyCylD
LAST 3 CYL
Moves CE to /MyCylB

Next
Next int
Next <element type>
Next int <element type>
Prev
Prev int
Prev <element type>
Prev int<element type>
First
First int
First <element type>
First int <element type>
Last
Last int
Last <element type>
Last int <element type>
<element type> int
5 CYL /MyCylC
NEXT
NEXT 3
NEXT CYL
NEXT 3 BOX
PREV
PREV 2
PREV BOX
PREV 2 CYL
FIRST
FIRST 2
FIRST CYL
FIRST 3 CYL
BOX 2
LAST
LAST 2
LAST CYL
LAST 3 CYL


The syntax for moving down a level shares much of the syntax for moving within the level.
Int
descend to nth child
First Member
Goes to 1st member
Last Member
Goes to last member
First <element type>,
FirstMember<element type>
Goes to first member of given type
First int <element type>
Go to nth element of given type in members list
Last <element type>,
LastMember<element type>
Goes to last member of given type
Last int <element type>
Go to nth last element of given type in members list
Next <element type>
Goes to next element in member list from current position
Next int <element type>
Goes to next nth element in member list of given type from current position
Prev <element type>
Goes to next element in member list from current position
Prev int <element type>
Goes to previous nth element in member list of given type from current position
<element type> int
descend to nth child of given type
Int
descend to nth child
First Member
Goes to 1st member
Last Member
Goes to last member
First <element type>,
FirstMember<element type>
Goes to first member of given type
First int <element type>
Go to nth element of given type in members list
Last <element type>,
LastMember<element type>
Goes to last member of given type
Last int <element type>
Go to nth last element of given type in members list
Next <element type>
Goes to next element in member list from current position
Next int <element type>
Goes to next nth element in member list of given type from current position
Prev <element type>
Goes to next element in member list from current position
Prev int <element type>
Goes to previous nth element in member list of given type from current position
<element type> int
descend to nth child of given type
We can use the same example as before but in this case we are positioned at the owning equipment, say /MYEQUI. The current position is defaulted to the start of the list. The member list being:
Moves CE to /MyCylC (5th member)
Moves CE to /MyBoxA
Moves CE to /MyBoxD
Moves CE to /MyCylA
Moves CE to /MyCylC
Moves CE to /MyCylD
Moves CE to /MyCylC
Moves CE to /MyCylA (same as FIRST CYL)
Moves CE to /MyCylB (same as FIRST 2 CYL)
Invalid as there are no cylinders before the current position
Moves CE to /MYBoxD
In the above examples, the use of NEXT had the same result as using FIRST. The use of PREV was invalid. This is because the current position was off the start. We can change the current position using the END syntax to give more meaningful examples
For example:
The CE is /MyEqui as before, but with the current position at /MyCylB
Moves CE to /MyCylC
Moves CE to /MyCylD
Moves CE to /MyCylA

Int
descend to nth child
First Member
Goes to 1st member
Last Member
Goes to last member
First <element type>,
FirstMember<element type>
Goes to first member of given type
First int <element type>
Go to nth element of given type in members list
Last <element type>,
LastMember<element type>
Goes to last member of given type
Last int <element type>
Go to nth last element of given type in members list
Next <element type>
Goes to next element in member list from current position
Next int <element type>
Goes to next nth element in member list of given type from current position
Prev <element type>
Goes to next element in member list from current position
Prev int <element type>
Goes to previous nth element in member list of given type from current position
<element type> int
descend to nth child of given type
5
Moves CE to /MyCylC (5th member)
FIRST MEMBER
Moves CE to /MyBoxA
LAST MEMBER
Moves CE to /MyBoxD
FIRST CYL
Moves CE to /MyCylA
FIRST 3 CYL
Moves CE to /MyCylC
LAST CYL
Moves CE to /MyCylD
LAST 2 CYL
Moves CE to /MyCylC
NEXT CYL
Moves CE to /MyCylA (same as FIRST CYL)
NEXT 2 CYL
Moves CE to /MyCylB (same as FIRST 2 CYL)
PREV CYL
Invalid as there are no cylinders before the current position
BOX 4
Moves CE to /MYBoxD
NEXT CYL
Moves CE to /MyCylC
NEXT 2 CYL
Moves CE to /MyCylD
PREV CYL
Moves CE to /MyCylA
/MyCylB
END

Int
First Member
Last Member
First <element type>,
FirstMember<element type>
First int <element type>
Last <element type>,
LastMember<element type>
Last int <element type>
Next <element type>
Next int <element type>
Prev <element type>
Prev int <element type>
<element type> int
5
FIRST MEMBER
LAST MEMBER
FIRST CYL
FIRST 3 CYL
LAST CYL
LAST 2 CYL
NEXT CYL
NEXT 2 CYL
PREV CYL
BOX 4
NEXT CYL
NEXT 2 CYL
PREV CYL


Syntax Ambiguity Between Moving Across and Down

In most cases there is no ambiguity with having some of the same syntax for moving down and moving across. This is because it is rare to have the same element type as a sibling and a member. However there are some situations where this does occur. In these cases, the default is to move down rather than across.
For example.

If the CE is /SUBE1, then
BOX 1
Moves CE to /BoxX (NOT /BoxA)
NEXT BOX
Moves CE to /BoxX (NOT /BoxB)
LAST BOX
Moves CE to /BoxY (NOT /BoxB)
BOX 1
Moves CE to /BoxX (NOT /BoxA)
NEXT BOX
Moves CE to /BoxX (NOT /BoxB)
LAST BOX
Moves CE to /BoxY (NOT /BoxB)

BOX 1
Moves CE to /BoxX (NOT /BoxA)
NEXT BOX
Moves CE to /BoxX (NOT /BoxB)
LAST BOX
Moves CE to /BoxY (NOT /BoxB)

BOX 1
NEXT BOX
LAST BOX


The commands to move to an element at the same level, may also be used for elements at any higher level. which means, if the command is invalid at the CE, AVEVA E3D Design will keep on climbing until the command becomes valid.
For example, for the previous example, with the Current element (CE) at /BoxY:
SUBE 2
Moves CE to /SUBE2
LAST SUBE
Moves CE to /SUBE2
FIRST ZONE
Moves CE to /Zone1 (assuming that this is the first zone)
SUBE 2
Moves CE to /SUBE2
LAST SUBE
Moves CE to /SUBE2
FIRST ZONE
Moves CE to /Zone1 (assuming that this is the first zone)

SUBE 2
Moves CE to /SUBE2
LAST SUBE
Moves CE to /SUBE2
FIRST ZONE
Moves CE to /Zone1 (assuming that this is the first zone)

SUBE 2
LAST SUBE
FIRST ZONE


The commands described so far all work on the Current Element (CE). It is allow able to do a navigation relative to any element by using the ‘OF’ syntax.
For example:
The ‘constructed’ name is actually an example of the use of the ‘OF’ syntax.
The ‘OF’ syntax can be nested as much as required.
For example:
FIRST MEMBER OF /ZONE1
 FIRST MEMBER OF FIRST BOX OF NEXT EQUI


Information provided on the GOTO Syntax and how to return to the previous current element..


The GOTO command can be used to go to any reference attribute.
For example:
This will go to the element pointed to by the CREF of the Current Element (CE).
As with other navigation commands, the ‘OF’ syntax may be used to go to reference on a different element.
For example:
Pseudo attributes can be specified after GOTO. A particularly useful pseudo attribute is FRSTW. This goes to first world of a given type.
For example:
This will go to the first catalog world.
GOTO CREF
GOTO HREF OF /BRANCH88
GOTO FRSTW CATA


The SAME command will always return to the previous current element.
For example:
The current element will now be /VESS1.
/VESS1
/SECTION99
SAME


The above commands are all examples of an identification (ID) expression. The one exception is the ‘GOTO’ syntax. This keyword is omitted within an ID expression. ID expressions should be enclosed in brackets, although in most cases, they will work without the brackets. An ID expression may itself be queried or assigned to a Programmable Macro Language (PML) variable.
Querying an expression or assigning it to a PML variable dos NOT change the CE.
Assigning an ID expression to a PML variable is a common way to write PML.
Q ( NEXT BOX)
!MyEle = ( next box )
!MyEle = ( next box of /VESS1 )
!MyEle = (SPRE )


Information provided on the User Defined Element Type (UDET) and the TRACE command.


A User Defined Element Type (UDET) may be used wherever an element type is valid.
For example:
The following exception applies:
When climbing, either the UDET or the base type may be specified.
For example:
(:MYBOX 1 OF /VESS1 )
NEXT :MYBOX
FIRST 2 :MYBOX
:MYEQUIP - will climb to /VESSEL
EQUIP - will also climb to /VESSEL


If in TeleTypewriter (TTY) mode, the TRACE ON/OFF command can be turned on track changes in current element. The default is on.


Pseudo Attributes Relating to Navigation

The following pseudo attributes relate to the database hierarchy. These can be queried directly or via a Programmable Macro Language (PML) variable.
ALLELE
DBREF
ElementType
All elements in the MDB of a particular type
CONNECTIONS
DBREF array

Connections
CONNECTIONSH
DBREF array

Connections for all descendants
CONNER
String
Int
Connection error message
DDEP
Int

Database depth within hierarchy (World is 0)
FRSTW
DBREF
String
Reference of first world of given DB type in current MDB
MAXD
Int

DB hierarchy depth of lowest level item beneath element
MBACK
DBREF array
*ElementType
Members in reverse order
MCOU
Int
*ElementType
Number of Element Members of Given type
MEMB
DBREF array
*ElementType
All members, or members of specific type
OWNLST
DBREF array

Owning hierarchy
PARENT
DBREF
*ElementType
Reference of ascendant element of specified type
SEQU
Int

Sequence Position in Member List
TYSEQU
Int

Type Sequence Number
‘*’- qualifier is optional
Attribute Name
Data Type
Qualifier
Description
ALLELE
DBREF
ElementType
All elements in the MDB of a particular type
CONNECTIONS
DBREF array
Connections
CONNECTIONSH
DBREF array
Connections for all descendants
CONNER
String
Int
Connection error message
DDEP
Int
Database depth within hierarchy (World is 0)
FRSTW
DBREF
String
Reference of first world of given DB type in current MDB
MAXD
Int
DB hierarchy depth of lowest level item beneath element
MBACK
DBREF array
*ElementType
Members in reverse order
MCOU
Int
*ElementType
Number of Element Members of Given type
MEMB
DBREF array
*ElementType
All members, or members of specific type
OWNLST
DBREF array
Owning hierarchy
PARENT
DBREF
*ElementType
Reference of ascendant element of specified type
SEQU
Int
Sequence Position in Member List
TYSEQU
Int
Type Sequence Number


Information is provided on attribute types, real attributes, physical quantities, setting and querying attributes, PML attribute classes and PML element type classes.


Attributes can be the following types:
Attributes may also be arrays of simple attributes Those supported are:
Integer
Real
Bool (or Logical)
String (or Text)
Datetime
Ref
This is a pointer to another element by storing its internal database reference (as Integer(2) array)
Position
This is a special form of Real(3) array containing 3 distances
Direction
This is a special form of a Real(3) array
Orientation
This is a special form of a Real(3) array
Word
This a character string of up to either 4 or 6 American Standard Code for Information Interchange (ASCI)I upper case character string stored as an integer which is often interpreted either as an enumerated value or as a user readable name. Words are used for the simple names and for many enumerated integer values. They are often called hash codes.
If more than 4 (or 6) characters are entered only the first ones will be used, but without generating an error. Lower case characters will be converted to uppercase, and non ASCII unicode characters will be ignored. The word cannot contain a space. The space is one of the characters that will automatically delimit the string.
Different attributes are limited to either 4 or 6 characters, although attribute and element type names do have up to 6. Whether 4 or 6 are allowed is an implementation issue and the older attributes existing in originally introduced in earlier databases tend to be limited to 4 characters.
Examples of their use are TYPE of elements and attributes.
Modifier attributes (JUST = TOP, BOT)
Pline names
Unit field of real attributes and dimension setting attributes (PTYPE = DIST, BORE, NONE etc)
Integer
Integer
Real
Real
Bool (or Logical)
Bool (or Logical)
String (or Text)
String (or Text)
Datetime
Datetime
Ref
This is a pointer to another element by storing its internal database reference (as Integer(2) array)
Ref
Position
This is a special form of Real(3) array containing 3 distances
Position
Direction
This is a special form of a Real(3) array
Direction
Orientation
This is a special form of a Real(3) array
Orientation
Word
This a character string of up to either 4 or 6 American Standard Code for Information Interchange (ASCI)I upper case character string stored as an integer which is often interpreted either as an enumerated value or as a user readable name. Words are used for the simple names and for many enumerated integer values. They are often called hash codes.
If more than 4 (or 6) characters are entered only the first ones will be used, but without generating an error. Lower case characters will be converted to uppercase, and non ASCII unicode characters will be ignored. The word cannot contain a space. The space is one of the characters that will automatically delimit the string.
Different attributes are limited to either 4 or 6 characters, although attribute and element type names do have up to 6. Whether 4 or 6 are allowed is an implementation issue and the older attributes existing in originally introduced in earlier databases tend to be limited to 4 characters.
Examples of their use are TYPE of elements and attributes.
Modifier attributes (JUST = TOP, BOT)
Pline names
Unit field of real attributes and dimension setting attributes (PTYPE = DIST, BORE, NONE etc)
Word
Integer Array
Real Array
Bool (or Logical) Array
Text Array
Ref Array
Integer Array
Integer Array
Real Array
Real Array
Bool (or Logical) Array
Bool (or Logical) Array
Text Array
Text Array
Ref Array
Ref Array


Real attributes can be purely numeric, but often they may be representing physical quantities. The type of a physical quantity is its (physical) dimension.
Attributes of physical quantities are consistently stored in the database in defined database units, irrespective of the current working units, or of the units of any value entered by you. The whole system operates on the expectation that all stored values of physically dimensioned quantities are in their relevant standard database units.
The following table lists the dimensions understood by the system giving:
For example attributes of length have a hash code of DIST are stored in mm and other standard units include inch, cm, ft, metre:
AbsPressure
ABSP
pascal
bar atm PSI torr mmHg inHg
pressure may be absolute or gauge
Acceleration
ACCL
m/s2

ActualPower
ACTPOW
V.A

Angle
ANGL
degree
grade arcmin arcsec

AngularAcceleration
ANGCCE
rad/s2

AngularFrequency
ANGF
deg/s
rpm rps rph angFreqHertz

AngularMomentum
ANGM
N.m.s

Area
SQDI
mm2
acre hectare

AreaPerLength
AREALE
m2/m
AreaPerLength

Bore
BORE
mm
in
Range of bore units limited to mm and inch (and Finch)
CableSize
CABL
kcmil
cirmil circmms

CalorificValueMole
CALVQ
J/Mol

CalorificValueVolume
CALVV
J/m3

Capacitance
CAPA
farad

Charge
CHAR
coulomb

Conductance
COND
siemens
mho

Content
PCUD
mm-3

ConvertiblePressure
PRESC
cpascala
cpascalg cbarg catmg cpsig ctorrg cmmHgg cinHgg cbara catma cpsia ctorra cmmHga cinHga osia inHgaAtSixtyDegF mmHgaAtSixtyDegF inWateraAtSixtyDegF inWateraAtFourDegC ftWateraAtSixtyDegF ftWateraAtFourDegC ata

Currency
CURY
USD
GBP EUR

Current
CURR
ampere

CurrentDensity
CURITY
A/m2

Density
DENS
kg/m3

DensityMANDB
MAND
kg/mm3

densities stored in MANU database
EffectiveHeatCapacity
EFFCAP
J/m/K

ElectricChargeDensity
ELECSI
C/m3

ElectricConductivity
CNDT
S/m

ElectricField
EFLD
V/m

ElectricFluxDensity
ELEFSI
C/m2

EMF
EMF
volt

Energy
ENER
kWh
joule BTU calorie calorieit BTUit chu chuAtFifteenDegC

EnergyDensity
EDEN
J/kg

Entropy
ENTR
J/K

Equivalence
EQUIVA
equivalent

EquivalenceFlow
EQULOW
equiv/s

EquivalencePerVolume
EQPRME
equiv/m3

FlowRateMolePerLength
SQPTD
Mol/s/m

FlowRateVolPerRpm
FRVPR

Force
FORC
newton
pdl dyne kgf lbf

FoulingFactor
FFAC
m2.K/W

Frequency
FREQ
hertz
freqRpm freqRps freqRph

GaugePressure
GAGE
pascal
bar atm PSI torr mmHg inHg
pressure may be absolute or gauge
HeatCoefficientArea
HEAREA
W/K

HeatFluxLinear
HEAEAR
W/m

HeatingValue
HVAL
J/m3

HeatOfReaction
HEAION
J/m3/h

HeatTransferCoeff
HTRA
W/m2/K

Illuminance
ILLUMI
lux

Impedance
IMPE
ohm

Inductance
INDU
henry

Inertia
INER
kg/m2

InversePressure
INVURE
pascal-1

InverseTemperature
INVRAT
kelvin-1

KinematicViscosity
KVIS
m2/s
Stoke

Length
DIST
mm
m in ft cm km mile yard micron thou angstrom

LinearDensity
PDIS
mm-1

Luminance
LUMNCE
cd/m2

LuminousFlux
LUMLUX
lumen

LuminousIntensity
LUMI
Candela

MagFieldIntensity
MFIN
A/m

MagFluxDensity
MFXD
tesla

MagneticFlux
MGFX
weber

Mass
MASS
kg
gram tonne lb oz longTon shortTon cwt longCwt shortCwt ozt grain stone

MassFlow
MFLO
kg/s

MassFlux
MASLUX
kg/s/m2

MassPerArea
MAPEA
kg/m2

MassPerEnergy
MAPGY
kg/J

MassReactionRate
MARETE
kg/s/m3

MolarConcentration
MOLONC
Mol/m3

MolarEntropy
MOLOPY
J/Mol/K

MolarFlow
MOLLOW
Mol/s

MolarMass
MOLASS
kg/Mol

MolarPermeability
MOLITY

MolarReactionRate
MOLATV
Mol/m3/s

MolarReactionRateMass
MOLATM
Mol/kg/s

MolarVolume
MOLUME
m3/Mol

MoleFluxDensity
MOLATA
Mol/m2/s

MolePerMass
MOLALY
Mol/kg

Momentum
MOME
N.s

Noise
NOIS
DecibelA

Permeability
PMBT
H/m

Permittivity
PMTT
F/m

pH
PH
pH

Power
POWE
kW
hp watt

PowerPerArea
POPEA
W/m2

PowerPerVolume
POWUME
W/m3

Pressure
PRES
pascal
bar atm psi torr mmHg inHg osi inHgAtSixtyDegF mmHgAtSixtyDegF inWaterAtSixtyDegF inWaterAtFourDegC ftWaterAtSixtyDegF ftWaterAtFourDegC mmWaterAtSixtyDegF mmWaterAtFourDegC at

PressurePerDistance
PRPEST
Pa/m

PressurePerTemperature
PRPEMP
Pa/K

PressureRate
PREATE
Pa/s

Radiance
RADNCE

RadiantIntensity
RADITY
W/sr

RadiationDose
RDOS
sievert
rem gray raddose

Radioactivity
RADY
Bq
curie

RadioactivityConc
RADONC
Bq/m3

Ratio
RATIO
Ratio
pc ppm ppb

ReactivePower
REAC
VAreac

Resistivity
REST
ohm/m

RotationalStiffness
STFR
N.m/rad

SecondMomentOfArea
SMOFA
metre4

SolidAngle
SANGL
steradian

SolventPermeability
SOPETY
kg/m2/s/Pa

SpecFuelelConsumptionVol
SPFUNS
m3/J

SpecHeatCapacity
SHCP
J/kg/K

SpecificRadioactivity
SPVITY
Bq/g

SpecificSurfaceMass
SPEASS
m2/kg

Speed
SPEE
m/s
knot

Stiffness
STIF
N/m

SubstanceQuantity
SUBQ
Mole
lbMole stdcubicfoot stdcubicmeters

SurfaceDensity
PSQD
mm-2

Temperature
TEMP
degC
degF kelvin degRan

TemperatureGradient
TPDI
degC/mm

TemperatureRate
TEMATE
K/s

TemperatureVolumePerMole
VOLPTQ

ThermalConductivity
TCON
W/m/K

ThermalExpansionCoeff
THENCO
degC-1

ThermalResistance
TRES
K/W

Time
TIME
second
min hr day month week year

Torque
TORQ
N.m

UnitMass
UMAS
kg/mm

ViscosityDynamic
VISC
Pa.s
poise

VolHeatTransferCoeff
VOLEFF
W/m3/K

Volume
CUDI
mm3
litre ImpGal USGal bbl Mbbl MMbbl grt ImpQrt USQrt USDryQrt ImpPint USPint USDryPint ImpFloz USFloz USDryGal

VolumetricFlow
VFLO
m3/s
MSCubicFeetDay

None
NONE

numerical real attribute
WORD
WORD

used in assigning parameter dimensions etc.
Parameter
UNIPAR

used for parameter attributes

Name of Dimension
HashCode/Word
Database Units
Other Specific Units
Comments
AbsPressure
ABSP
pascal
bar atm PSI torr mmHg inHg
pressure may be absolute or gauge
Acceleration
ACCL
m/s2
ActualPower
ACTPOW
V.A
Angle
ANGL
degree
grade arcmin arcsec
AngularAcceleration
ANGCCE
rad/s2
AngularFrequency
ANGF
deg/s
rpm rps rph angFreqHertz
AngularMomentum
ANGM
N.m.s
Area
SQDI
mm2
acre hectare
AreaPerLength
AREALE
m2/m
AreaPerLength
Bore
BORE
mm
in
Range of bore units limited to mm and inch (and Finch)
CableSize
CABL
kcmil
cirmil circmms
CalorificValueMole
CALVQ
J/Mol
CalorificValueVolume
CALVV
J/m3
Capacitance
CAPA
farad
Charge
CHAR
coulomb
Conductance
COND
siemens
mho
Content
PCUD
mm-3
ConvertiblePressure
PRESC
cpascala
cpascalg cbarg catmg cpsig ctorrg cmmHgg cinHgg cbara catma cpsia ctorra cmmHga cinHga osia inHgaAtSixtyDegF mmHgaAtSixtyDegF inWateraAtSixtyDegF inWateraAtFourDegC ftWateraAtSixtyDegF ftWateraAtFourDegC ata
Currency
CURY
USD
GBP EUR
Current
CURR
ampere
CurrentDensity
CURITY
A/m2
Density
DENS
kg/m3
DensityMANDB
MAND
kg/mm3
densities stored in MANU database
EffectiveHeatCapacity
EFFCAP
J/m/K
ElectricChargeDensity
ELECSI
C/m3
ElectricConductivity
CNDT
S/m
ElectricField
EFLD
V/m
ElectricFluxDensity
ELEFSI
C/m2
EMF
EMF
volt
Energy
ENER
kWh
joule BTU calorie calorieit BTUit chu chuAtFifteenDegC
EnergyDensity
EDEN
J/kg
Entropy
ENTR
J/K
Equivalence
EQUIVA
equivalent
EquivalenceFlow
EQULOW
equiv/s
EquivalencePerVolume
EQPRME
equiv/m3
FlowRateMolePerLength
SQPTD
Mol/s/m
FlowRateVolPerRpm
FRVPR
Force
FORC
newton
pdl dyne kgf lbf
FoulingFactor
FFAC
m2.K/W
Frequency
FREQ
hertz
freqRpm freqRps freqRph
GaugePressure
GAGE
pascal
bar atm PSI torr mmHg inHg
pressure may be absolute or gauge
HeatCoefficientArea
HEAREA
W/K
HeatFluxLinear
HEAEAR
W/m
HeatingValue
HVAL
J/m3
HeatOfReaction
HEAION
J/m3/h
HeatTransferCoeff
HTRA
W/m2/K
Illuminance
ILLUMI
lux
Impedance
IMPE
ohm
Inductance
INDU
henry
Inertia
INER
kg/m2
InversePressure
INVURE
pascal-1
InverseTemperature
INVRAT
kelvin-1
KinematicViscosity
KVIS
m2/s
Stoke
Length
DIST
mm
m in ft cm km mile yard micron thou angstrom
LinearDensity
PDIS
mm-1
Luminance
LUMNCE
cd/m2
LuminousFlux
LUMLUX
lumen
LuminousIntensity
LUMI
Candela
MagFieldIntensity
MFIN
A/m
MagFluxDensity
MFXD
tesla
MagneticFlux
MGFX
weber
Mass
MASS
kg
gram tonne lb oz longTon shortTon cwt longCwt shortCwt ozt grain stone
MassFlow
MFLO
kg/s
MassFlux
MASLUX
kg/s/m2
MassPerArea
MAPEA
kg/m2
MassPerEnergy
MAPGY
kg/J
MassReactionRate
MARETE
kg/s/m3
MolarConcentration
MOLONC
Mol/m3
MolarEntropy
MOLOPY
J/Mol/K
MolarFlow
MOLLOW
Mol/s
MolarMass
MOLASS
kg/Mol
MolarPermeability
MOLITY
MolarReactionRate
MOLATV
Mol/m3/s
MolarReactionRateMass
MOLATM
Mol/kg/s
MolarVolume
MOLUME
m3/Mol
MoleFluxDensity
MOLATA
Mol/m2/s
MolePerMass
MOLALY
Mol/kg
Momentum
MOME
N.s
Noise
NOIS
DecibelA
Permeability
PMBT
H/m
Permittivity
PMTT
F/m
pH
PH
pH
Power
POWE
kW
hp watt
PowerPerArea
POPEA
W/m2
PowerPerVolume
POWUME
W/m3
Pressure
PRES
pascal
bar atm psi torr mmHg inHg osi inHgAtSixtyDegF mmHgAtSixtyDegF inWaterAtSixtyDegF inWaterAtFourDegC ftWaterAtSixtyDegF ftWaterAtFourDegC mmWaterAtSixtyDegF mmWaterAtFourDegC at
PressurePerDistance
PRPEST
Pa/m
PressurePerTemperature
PRPEMP
Pa/K
PressureRate
PREATE
Pa/s
Radiance
RADNCE
RadiantIntensity
RADITY
W/sr
RadiationDose
RDOS
sievert
rem gray raddose
Radioactivity
RADY
Bq
curie
RadioactivityConc
RADONC
Bq/m3
Ratio
RATIO
Ratio
pc ppm ppb
ReactivePower
REAC
VAreac
Resistivity
REST
ohm/m
RotationalStiffness
STFR
N.m/rad
SecondMomentOfArea
SMOFA
metre4
SolidAngle
SANGL
steradian
SolventPermeability
SOPETY
kg/m2/s/Pa
SpecFuelelConsumptionVol
SPFUNS
m3/J
SpecHeatCapacity
SHCP
J/kg/K
SpecificRadioactivity
SPVITY
Bq/g
SpecificSurfaceMass
SPEASS
m2/kg
Speed
SPEE
m/s
knot
Stiffness
STIF
N/m
SubstanceQuantity
SUBQ
Mole
lbMole stdcubicfoot stdcubicmeters
SurfaceDensity
PSQD
mm-2
Temperature
TEMP
degC
degF kelvin degRan
TemperatureGradient
TPDI
degC/mm
TemperatureRate
TEMATE
K/s
TemperatureVolumePerMole
VOLPTQ
ThermalConductivity
TCON
W/m/K
ThermalExpansionCoeff
THENCO
degC-1
ThermalResistance
TRES
K/W
Time
TIME
second
min hr day month week year
Torque
TORQ
N.m
UnitMass
UMAS
kg/mm
ViscosityDynamic
VISC
Pa.s
poise
VolHeatTransferCoeff
VOLEFF
W/m3/K
Volume
CUDI
mm3
litre ImpGal USGal bbl Mbbl MMbbl grt ImpQrt USQrt USDryQrt ImpPint USPint USDryPint ImpFloz USFloz USDryGal
VolumetricFlow
VFLO
m3/s
MSCubicFeetDay
None
NONE
numerical real attribute
WORD
WORD
used in assigning parameter dimensions etc.
Parameter
UNIPAR
used for parameter attributes


A value of a real physical quantity has a numerical value (the number) and defines units of measure which are the units in which the quantity is measured. For example a distance can be 25.4mm or 1inch but regardless of the number it is the same distance because there is a known conversion factor between millimetres and inches.
Value may be entered into the system with a unit qualifier which determines the dimension of the physical quantity and sets its value in those units.
The system will automatically convert from the input unit to the database unit, and from database unit to a presentation unit (for example the 'current' unit) using internally defined conversion factors. For compound units (for example,. from 'pound per square inch' to 'pascal') the conversion factors of the component units are combined together.
The internal conversion units used are sourced as accurately as possible. Some conversions are arithmetically exact for example, inches:mm, and SI conversions as listed by Bureau International des Poids et Mesures:
Some conversions are experimentally determined (for example, conversion from Kg force to Newton) and precise published values are used.
All the values are consistent with those published, for example, by US National Institute of Standards and Technology and listed at
When more accurate values greater than 7 significant figures are obtainable from other sources such as
and elsewhere these have been used in preference.
There is one exception to this rule. The British Thermal Unit (BTU) which is defined by AVEVA E3D Design to be a 'typical' value of 1055.16kJ and not that defined by Fifth International Conference value of 1055.05585262kJ.

http://physics.nist.gov/Pubs/SP811/appenB8.html
http://en.wikipedia.org/wiki/Template:Convert
http://physics.nist.gov/Pubs/SP811/appenB8.html
http://en.wikipedia.org/wiki/Template:Convert


There are a set of standard specific units that the system will understand. Ideally the unit qualifier should be appended to the value (for example, 6.5inch) but often it can be recognized if separated from its value (for example, 6.5 inch); but not always.
For each unit there is an abbreviated form, a long form, and a full form (which are often identical) (for example, mm and millimeter). All can be understood including curtailed versions of the long form (for example, metre and met) always providing there are no other ambiguities. However in general, the long form will be necessary if the unit is solitary (which means. not part of a compound unit) and especially if the unit qualifier is space separated from its value.
The set of standard units are:
arcmin
arcmin
arcmin
ARCM
Angle
arcsec
arcsec
arcsec
ARCS
Angle
deg
degree
degree
DEG
Angle
grad
grad
grade
GRAD
Angle
rad
radian
radian
RAD
Angle
acre
acre
acre
ACRE
Area
ha
hectare
hectare
HECT
Area
F
farad
farad
FARA
Capacitance
C
coulomb
coulomb
COUL
Charge
mho
mho
mho
MHO
Conductance
Si
siemens
siemens
SIEM
Conductance
EUR
EUR
euro
EURO
Currency
GBP
GBP
GBPound
UKPD
Currency
USD
USD
USDollar
USDO
Currency
A
ampere
ampere
AMP
Current
V
volt
volt
VOLT
EMF
BTU
BTU
BTU
BTU
Energy
cal
calorie
calorie
CALO
Energy
J
joule
joule
JOUL
Energy
kWh
kWh
kiloWatthour
KWH
Energy
dyn
dyne
dyne
FORC
Force
kgf
kgf
kgForce
KGF
Force
lbf
lbf
poundForce
LBF
Force
N
newton
newton
NEWT
Force
pdl
pdl
poundal
PDL
Force
Hz
hertz
hertz
HERZ
Frequency
rpm
rpm
rpm
RPM
Frequency
ohm
ohm
ohm
OHM
Impedance
H
henry
henry
HENR
Inductance
Angst
angstrom
angstrom
ANGS
Length
cm
cm
centimetre
CM
Length
ft
ft
foot
FOOT
Length
in
in
inch
INCH
Length
in
inch
inch
FINC
Length
km
km
kilometre
KM
Length
m
metre
metre
METR
Length
micron
micron
micron
MICR
Length
mile
mile
mile
MILE
Length
mm
mm
millimetre
MM
Length
thou
thou
thou
THOU
Length
yd
yd
yard
YARD
Length
T
tesla
tesla
TESL
MagFluxDensity
Wb
weber
weber
WEBE
MagneticFlux
cwt
cwt
hundredweight
CWT
Mass
g
gram
gram
GRAM
Mass
kg
kg
kilogram
KG
Mass
lb
lb
pound
POUN
Mass
oz
oz
ounce
OZ
Mass
shortTon
shortTon
shortTon
STON
Mass
ton
longTon
longTon
TON
Mass
tonne
tonne
tonne
TONN
Mass
hp
hp
horsePower
HP
Power
kW
kW
kiloWatt
KWAT
Power
W
watt
watt
WATT
Power
atm
atm
atmosphere
ATM
Pressure
bar
bar
bar
BAR
Pressure
inHg
inHg
inHg
INHG
Pressure
mmHg
mmHg
mmHg
MMHG
Pressure
Pa
pascal
pascal
PASC
Pressure
PSI
PSI
PSI
PSI
Pressure
torr
torr
torr
TORR
Pressure
Gy
gray
gray
GRAY
RadiationDose
radD
raddose
radDose
RADD
RadiationDose
rem
rem
rem
REM
RadiationDose
Sv
sievert
sievert
SIEV
RadiationDose
Bq
bequerel
bequerel
BEQU
Radioactivity
Ci
curie
curie
CURI
Radioactivity
knot
knot
knot
KNOT
Speed
degC
degC
degCelsius
CELS
Temperature
degF
degF
degFahrenheit
FAHR
Temperature
degRan
degRan
degRankine
RANK
Temperature
K
kelvin
kelvin
KELV
Temperature
day
day
day
DAY
Time
hr
hour
hour
HOUR
Time
min
minute
minute
MINU
Time
mth
month
month
MONT
Time
s
second
second
SECO
Time
wk
week
week
WEEK
Time
yr
year
year
YEAR
Time
P
poise
poise
POIS
ViscosityDynamic
ImpGal
ImpGal
ImpGallon
GALI
Volume
l
litre
litre
LITR
Volume
USGal
USGal
USGallon
GALU
Volume
Where there are US and SI spelling alternatives BOTH versions are supported for example litre and liter, millimetre and millimeter etc.
There is a significant extension of input in feet and inches (so-called FINCH format).
A double quote (") may be used as a unit qualifier for inch in any context (decimal inch input, or finch input).
In FINCH format a single quote (') is accepted as an abbreviation for feet and must be used for non format controlled input) and a double quote for inches.
The feet and inch value is entered using both feet and inch unit qualifiers, and the fractional part of inches can either be entered as a decimal, 5'2.125" or as a fraction 5'2.1/8". The inch qualifier can be any inch qualifier or none (as it is syntactically redundant).
If the input is controlled by a format object the foot qualifier can be any foot qualifier (ft, foot, blip) and the inch qualifier can be placed after the integer inch value OR at the end of the inch value, or omitted.
Abbreviation
Long Name
Fullname
Hash Code
Physical Dimension
arcmin
arcmin
arcmin
ARCM
Angle
arcsec
arcsec
arcsec
ARCS
Angle
deg
degree
degree
DEG
Angle
grad
grad
grade
GRAD
Angle
rad
radian
radian
RAD
Angle
acre
acre
acre
ACRE
Area
ha
hectare
hectare
HECT
Area
F
farad
farad
FARA
Capacitance
C
coulomb
coulomb
COUL
Charge
mho
mho
mho
MHO
Conductance
Si
siemens
siemens
SIEM
Conductance
EUR
EUR
euro
EURO
Currency
GBP
GBP
GBPound
UKPD
Currency
USD
USD
USDollar
USDO
Currency
A
ampere
ampere
AMP
Current
V
volt
volt
VOLT
EMF
BTU
BTU
BTU
BTU
Energy
cal
calorie
calorie
CALO
Energy
J
joule
joule
JOUL
Energy
kWh
kWh
kiloWatthour
KWH
Energy
dyn
dyne
dyne
FORC
Force
kgf
kgf
kgForce
KGF
Force
lbf
lbf
poundForce
LBF
Force
N
newton
newton
NEWT
Force
pdl
pdl
poundal
PDL
Force
Hz
hertz
hertz
HERZ
Frequency
rpm
rpm
rpm
RPM
Frequency
ohm
ohm
ohm
OHM
Impedance
H
henry
henry
HENR
Inductance
Angst
angstrom
angstrom
ANGS
Length
cm
cm
centimetre
CM
Length
ft
ft
foot
FOOT
Length
in
in
inch
INCH
Length
in
inch
inch
FINC
Length
km
km
kilometre
KM
Length
m
metre
metre
METR
Length
micron
micron
micron
MICR
Length
mile
mile
mile
MILE
Length
mm
mm
millimetre
MM
Length
thou
thou
thou
THOU
Length
yd
yd
yard
YARD
Length
T
tesla
tesla
TESL
MagFluxDensity
Wb
weber
weber
WEBE
MagneticFlux
cwt
cwt
hundredweight
CWT
Mass
g
gram
gram
GRAM
Mass
kg
kg
kilogram
KG
Mass
lb
lb
pound
POUN
Mass
oz
oz
ounce
OZ
Mass
shortTon
shortTon
shortTon
STON
Mass
ton
longTon
longTon
TON
Mass
tonne
tonne
tonne
TONN
Mass
hp
hp
horsePower
HP
Power
kW
kW
kiloWatt
KWAT
Power
W
watt
watt
WATT
Power
atm
atm
atmosphere
ATM
Pressure
bar
bar
bar
BAR
Pressure
inHg
inHg
inHg
INHG
Pressure
mmHg
mmHg
mmHg
MMHG
Pressure
Pa
pascal
pascal
PASC
Pressure
PSI
PSI
PSI
PSI
Pressure
torr
torr
torr
TORR
Pressure
Gy
gray
gray
GRAY
RadiationDose
radD
raddose
radDose
RADD
RadiationDose
rem
rem
rem
REM
RadiationDose
Sv
sievert
sievert
SIEV
RadiationDose
Bq
bequerel
bequerel
BEQU
Radioactivity
Ci
curie
curie
CURI
Radioactivity
knot
knot
knot
KNOT
Speed
degC
degC
degCelsius
CELS
Temperature
degF
degF
degFahrenheit
FAHR
Temperature
degRan
degRan
degRankine
RANK
Temperature
K
kelvin
kelvin
KELV
Temperature
day
day
day
DAY
Time
hr
hour
hour
HOUR
Time
min
minute
minute
MINU
Time
mth
month
month
MONT
Time
s
second
second
SECO
Time
wk
week
week
WEEK
Time
yr
year
year
YEAR
Time
P
poise
poise
POIS
ViscosityDynamic
ImpGal
ImpGal
ImpGallon
GALI
Volume
l
litre
litre
LITR
Volume
USGal
USGal
USGallon
GALU
Volume
Note:
" and ' qualifiers are NOT accepted for minutes and seconds or arc units.

Note
:


Any unit may have an SI unit prefix preceding it which can be applied either directly (as in hectogramme) or with an intervening underscore (hecto_gramme).
Unlike the units themselves the SI prefix cannot be abbreviated as it would introduce too much syntax ambiguity.
Many standard units actually incorporate the SI prefix in them (mm, cm, kg) these are still standard units so it is actually (although misleadingly) possible to duplicate this as in millikg (which is, equivalent to a gram).
The system does not forbid use of SI prefixes with imperial units, although, this is not to be encouraged.
The set of prefixes supported are:
Exa
1E+18
Peta
1E+15
Tera
1E+12
Giga
1E+09
Mega
1000000
kilo
1000
hecto
100
deca
10
deci
0.1
centi
0.01
milli
0.001
micro
0.000001
nano
1E-09
pico
1E-12
femto
1E-15

Prefix
Multiplier
Exa
1E+18
Peta
1E+15
Tera
1E+12
Giga
1E+09
Mega
1000000
kilo
1000
hecto
100
deca
10
deci
0.1
centi
0.01
milli
0.001
micro
0.000001
nano
1E-09
pico
1E-12
femto
1E-15


Units may have powers applied by immediately appending an integer power. This is often the only way of inputting the units of some values. Limited alternative verbose forms are supported using additional words square and cubic (which can be abbreviated down to SQU and CUB). For example:
However the verbose syntax will not work with all abbreviations of standard units.
For compound units requiring more than one unit these should be appended either using a dot (.) or a slash (/) which inverts the following power. Density, Speed and Moments can be input using forms such as:
Again limited verbose forms are also supported using either concentrated units or the additional word 'per' as in
However whenever values are reported back the verbose forms are generally NOT used.
In general there is no serious limit to the complexity of compound units that may be entered.
However when compound units are stored by the system, in particular when setting current working units or setting Programmable Macro Language (PML) variables, there are limitations to the complexity of compound units that can be maintained.
No more than 4 component units can be used.
Each component unit can have:
When there is only one component it can be one of:
If there are two components these are defined with:
If there are three components these are defined with:
If there are four components these are defined with:
When the choice of units, powers or prefixes are restricted, the order of components may be adjusted to match a compound unit in range.
The named unit itself
An optional power of the unit (multiple and/or reciprocal)
An optional SI Prefix
The named unit itself
The named unit itself
An optional power of the unit (multiple and/or reciprocal)
An optional power of the unit (multiple and/or reciprocal)
An optional SI Prefix
An optional SI Prefix
Any standard unit
-8>power>+8
SI Prefixes femto to Exa
Any standard unit
Any standard unit
-8>power>+8
-8>power>+8
SI Prefixes femto to Exa
SI Prefixes femto to Exa
Any standard unit
-8>power>+8
SI Prefixes femto to Exa for first component, and milli to Mega for second
Any standard unit
Any standard unit
-8>power>+8
-8>power>+8
SI Prefixes femto to Exa for first component, and milli to Mega for second
SI Prefixes femto to Exa for first component, and milli to Mega for second
Any standard unit for first components, limited to 64 common units for last
-8>power>+8
NO SI Prefixes
Any standard unit for first components, limited to 64 common units for last
Any standard unit for first components, limited to 64 common units for last
-8>power>+8
-8>power>+8
NO SI Prefixes
NO SI Prefixes
Limited to a set of 32 common units
-2>power>+2 except the last unit which has power range of +/-4
NO SI Prefixes
Limited to a set of 32 common units
Limited to a set of 32 common units
-2>power>+2 except the last unit which has power range of +/-4
-2>power>+2 except the last unit which has power range of +/-4
NO SI Prefixes
NO SI Prefixes
Note:
The limitation below is not applicable to AVEVA Administration 1.8, AVEVA Engineering 15.3 and higher.

Note
:


Units of Absolute and Gauge (gage) Pressures

A trailing qualifier of .abs or .gauge or .gage when added to any pressure unit will be accepted on input and in string conversion.
A trailing "a" or "g" will be accepted on standard units (and their abbreviations) on input, and on string conversion.
When gauge and absolute pressures are used in expressions they will always revert back to generic pressures. In particular there is no conversion factor applied between gauge and absolute pressures and so absolute is considered the same as generic pressures.
The two additional pressure dimensions are supported for absolute and gauge pressures (ABS_PRESSURE and GAUGE_PRESSURE)
The trailing qualifier will create a quantity with dimension of either absolute or gauge pressure.
This trailing component can be added to both standard units such as pascal, bar, psi, atmosphere (bar.abs) and compound units (N/m2.abs, lbf/in2.gauge).
The trailing qualifier will create a quantity with dimension of either absolute or gauge pressure.
The trailing qualifier will create a quantity with dimension of either absolute or gauge pressure.
This trailing component can be added to both standard units such as pascal, bar, psi, atmosphere (bar.abs) and compound units (N/m2.abs, lbf/in2.gauge).
This trailing component can be added to both standard units such as pascal, bar, psi, atmosphere (bar.abs) and compound units (N/m2.abs, lbf/in2.gauge).
The .gauge or .abs will be appended to compound units when quantities are formatted as gauge or absolute pressures.
The .gauge or .abs will be appended to compound units when quantities are formatted as gauge or absolute pressures.
The .gauge or .abs will be appended to compound units when quantities are formatted as gauge or absolute pressures.
The trailing g or a will create an object with dimension of either gauge or absolute pressure, for example pascala, barg, psig, Paa, Pag
It will be appended to standard units when quantities are formatted as gauge of absolute pressures
The trailing g or a will create an object with dimension of either gauge or absolute pressure, for example pascala, barg, psig, Paa, Pag
The trailing g or a will create an object with dimension of either gauge or absolute pressure, for example pascala, barg, psig, Paa, Pag
It will be appended to standard units when quantities are formatted as gauge of absolute pressures
It will be appended to standard units when quantities are formatted as gauge of absolute pressures
These can be set in format objects (both Programmable Macro Language (PML) and .Net) and used to format generic pressure quantities.
They can be set for User Defined Attributes (UDAs) or Properties to define values of these will always be output as gauge or absolute quantities
They will be able to have their own current units, distinct from generic pressure units. (similarly to DIST and BORE)
These can be set in format objects (both Programmable Macro Language (PML) and .Net) and used to format generic pressure quantities.
These can be set in format objects (both Programmable Macro Language (PML) and .Net) and used to format generic pressure quantities.
They can be set for User Defined Attributes (UDAs) or Properties to define values of these will always be output as gauge or absolute quantities
They can be set for User Defined Attributes (UDAs) or Properties to define values of these will always be output as gauge or absolute quantities
They will be able to have their own current units, distinct from generic pressure units. (similarly to DIST and BORE)
They will be able to have their own current units, distinct from generic pressure units. (similarly to DIST and BORE)
Note:
You cannot apply a single "a" or "g" as this means ampere or gram!

Note
:


For efficiency and consistency all attributes, whether real or pseudo, are handled by the same code within product whenever possible. Dimensioned attribute whose values are stored in the Engineering Database are always returned in Database Units, and this fact is utilized within the attribute handling code. It is therefore essential that dimensioned pseudo attributes are returned in Database units. This can be achieved simply by having:
as the last two lines of any Programmable Macro Language (PML) function which is calculating the dimensioned pseudo attribute value.
!result = !value.dbunits()
return !result

!result = !value.dbunits()
return !result


Information is provided on querying attributes and arrays, on dot notation in Programmable Macro Language (PML), on qualifiers, on relative positions, directions and orientations and on pseudo attributes.


The attributes available for an element will depend on its type, for example, a site will have different attributes to a branch. The lists of valid attributes can be obtained as follows:

Note


An attribute value may be obtained as follows:
Specify the attribute name after QUERY or on the RHS of a Programmable Macro Language (PML) assignment. This will return the attribute value, if valid, for the Current Element (CE).
Via a DBREF object using the attribute name as a method, or using the ‘Attribute’ method.
The querying is the same for UDAs or pseudo attributes.
The type of the PML variable will depend on the type of the attribute and whether it is an array or not. Attributes of INTEGER type will be assigned to a PML variable of type REAL. Attributes of type WORD are assigned to PML variable of type TEXT.
If the attribute is a DISTANCE attribute and current DISTANCE units are inch or finch, then the value will be converted to inches. If the attribute is a BORE attribute and current BORE units are inch or finch, then the value will be converted to inches.
If the attribute is a REAL attribute and it is defined to be one a physical quantity (distance, angle, mass, whose metal data UNIT is set to a dimensions such as DIST, ANGL, or MASS etc.) then the attribute is returned in the current units of that quantity.
If it is an attribute of volume capacity (CUDI) and the current units are derived from current distance units of INCH or FINCH the value will be reported in cubic inches.
PML1 syntax allows an attribute to be passed to a PML variable without the ‘=’ operator. If this is done then the value will always be formatted to a TEXT using the current units if applicable.
The VAR command has many forms but in all cases it creates PML STRING variables, not Numbers. If the contents are values and numbers then where these are physical quantities they will be appended with the units of the values as stored in the system.
Will store the text equivalent of the value of the XLEN attribute in current distance units.
Will return the text string form of !!CE.XLEN. It does this by using the STRING (actually queryString) method of the (temporary) real variable created by !!CE.XLEN. The real variable will be created in current units and the STRING method will append the unit qualifier to the value output
Attributes my be queried on other elements by using the ‘OF’ syntax.
The syntax following the OF may be any ID expression.


If the attribute is an array, the query will return a list of values. Individual elements can be queried by passing in the index number.
Alternatively, the NUM keyword can be used for PML 1 syntax. A range of values can be returned using the TO keyword.
An error will occur if attempting to query off the end of the array.
Within a PML1 expression, a position attribute may be queried as an array in order to access the individual coordinates.


For reference attributes, the Programmable Macro Language (PML) dot notation can be used to achieve a similar result.
This will return the description of the element pointed to by the CREF attribute on the Current Element (CE).


Many pseudo attributes take a qualifier. The qualifier is the extra information required to make the query. Examples of where a qualifier is used are:
The definition of what pseudo attributes take what qualifier is described in the data model reference manual.
The qualifier follows the attribute name in brackets. Attribute qualifiers must be preceded by the keyword ATTNAME and element types must be preceded by the keyword TYPENAME.
For Programmable Macro LAnguage (PML) variables, the qualifier should be assigned to a PML array object and passed to the ‘Attribute’ method as the second argument:
to query PPOS 1
to query list of nominal bores:
to query Equipment members:


Relative Positions, Directions, Orientations

Positions, Orientations, directions can be queried relative to another element using the WRT syntax.
The use of WRT is described more fully in the Expressions.

Expressions
Expressions


Pseudo attributes relating to the list of attributes.
ATTLIST
WORD(300)

List of all visible attributes for element
PSATTS
WORD(500)

List of pseudo attributes
UDALIS
WORD(300)

List of UDAs
UDASET
WORD(300)

List of UDAs set
Pseudo attributes relating to the name.
CUTNAM
STRING(700)
NUMBER
Full name of element, truncated to n characters
CUTNMN
STRING(700)
NUMBER
Full name of element (without leading slash) truncated to n characters
FLNM
STRING(700)

Full name of the element
FLNN
STRING(700)

Full name of the element (without leading slash)
ISNAMED
BOOL

True if element is named
NAMESQ
STRING(700)

Type. sequence number and name of element
NAMETY
STRING(700)

Type and name of the element
NAMN
STRING(500)

Name of the element (without leading slash)
NAMTYP
STRING(700)

Type and full name of element
Pseudo attributes relating to the type.
ACTTYPE
WORD

Type of the element, ignoring UDET, truncated to 4 or 6 characters.
AHLIS
WORD(200)

List of actual types in owning hierarchy
OSTYPE
WORD

Short cut for "Type of owner"
TYPE
WORD

Type of the element, ignoring UDET, truncated to 4 or 6 characters

Attribute Name
Data Type
Qualifier
Description
ATTLIST
WORD(300)
List of all visible attributes for element
PSATTS
WORD(500)
List of pseudo attributes
UDALIS
WORD(300)
List of UDAs
UDASET
WORD(300)
List of UDAs set
Attribute Name
Data Type
Qualifier
Description
CUTNAM
STRING(700)
NUMBER
Full name of element, truncated to n characters
CUTNMN
STRING(700)
NUMBER
Full name of element (without leading slash) truncated to n characters
FLNM
STRING(700)
Full name of the element
FLNN
STRING(700)
Full name of the element (without leading slash)
ISNAMED
BOOL
True if element is named
NAMESQ
STRING(700)
Type. sequence number and name of element
NAMETY
STRING(700)
Type and name of the element
NAMN
STRING(500)
Name of the element (without leading slash)
NAMTYP
STRING(700)
Type and full name of element
Attribute Name
Data Type
Qualifier
Description
ACTTYPE
WORD
Type of the element, ignoring UDET, truncated to 4 or 6 characters.
AHLIS
WORD(200)
List of actual types in owning hierarchy
OSTYPE
WORD
Short cut for "Type of owner"
TYPE
WORD
Type of the element, ignoring UDET, truncated to 4 or 6 characters


Information is provided on the standard and special syntax, resetting user defined attributes (UDAs) to default, setting arrays, values of arrays and related pseudo attributes.


Attribute values can be set in two ways:
The following general rules must be followed:
The behaviour for each attribute type is described below:
REAL attribute - allows an int, real or real expression
INTEGER attribute - allows an int, a real or real expression. The result will be rounded to the nearest integer.
TEXT attribute - allows a text value, a text expression, or UNSET. Assigning UNSET will result in a zero length string.
LOGICAL attribute - allows FALSE, TRUE or logical expression.
REF attribute - allows a name, refno, ID expression, or UNSET, NULREF keywords. The UNSET and NULREF keywords both result in a null reference (=0/0) being assigned.
WORD attribute - If assigning to a PML variable, then allows a text value or text expression.
If assigning via the attribute name, then it must be a word.
POSITION attribute - allows a position or position expression.
DIRECTION attribute - Allows a direction or direction expression
ORIENTATION attribute - Allows an orientation or an orientation expression
The value being assigned to an attribute must either be dimensionally equivalent to the attribute, or else a numerical value (which is taken to be in current working units of the dimension). If there is a clash of physical quantity an error will occur. The following will all generate errors.
The value assigned must be the correct type for the attribute type (see examples below)
PML variables can not be directly used if using method (2). The PML variable must be expanded using the late evaluation syntax, i.e. ‘XLEN !A’ is invalid but ‘XLEN $!A’ is OK. This also applies to any PML variables within expressions.
The value assigned must be the correct type for the attribute type (see examples below)
The value assigned must be the correct type for the attribute type (see examples below)
PML variables can not be directly used if using method (2). The PML variable must be expanded using the late evaluation syntax, i.e. ‘XLEN !A’ is invalid but ‘XLEN $!A’ is OK. This also applies to any PML variables within expressions.
PML variables can not be directly used if using method (2). The PML variable must be expanded using the late evaluation syntax, i.e. ‘XLEN !A’ is invalid but ‘XLEN $!A’ is OK. This also applies to any PML variables within expressions.
Note:
There must be a space between the name and the ‘)’
Note:
The POS attribute can not be set by name, use AT syntax instead.
Do not use brackets if setting by attribute name.
Note:
Do not use brackets if setting by attribute name.
Note:
Do not use brackets if setting by attribute name.

Note
:
Note
:
Note
:
Note
:
Note
:


A UDA may be set back to it’s default by using the DEFAULT keyword.


If assigning via a Programmable Macro Language (PML) variable, an array attribute must be assigned from a PML array object.
If assigning via the attribute name, then a list of values must be given.


If assigning via a PML variable, an index number may be specified in square brackets.
If assigning via the attribute name, a single value of an array may be set using the NUMB keyword. The NUMB keyword follows the attribute name, and is followed by the index number.
This sets the 2nd value of the array to 99.
The NUMB command actually specifies the start point for a list of values.
This would set the 3rd value to 99, the 4th to 100 and the 5th to 101.
The new values may go off the end of the existing array, but the start point must not be more than one beyond the existing end point.


All elements except the WORLD can be named. Although Design elements are often given suitable names while being created, later name changes can be made by giving a new name or by removing the old name. The name of any element must be unique; that is, not already used for another currently accessible element.
NAME /ZONE5D
The current element is given the specified name provided it has not been used elsewhere.
UNN
The current element loses its name (it is still identifiable by its automatically allocated reference number).
The name of the current element and offspring can be modified where a standard name part occurs.
REN ALL /Z1 /Z2
All occurrences of /Z1 in the names of the current element and its offspring will be changed to /Z2.
Examples
NAME /ZONE5D
The current element is given the specified name provided it has not been used elsewhere.
UNN
The current element loses its name (it is still identifiable by its automatically allocated reference number).
Example
REN ALL /Z1 /Z2
All occurrences of /Z1 in the names of the current element and its offspring will be changed to /Z2.
>-- NAMe --+-- ALL name name --.
           |                   |
           ‘-- name -----------+-->
>-- UNName -->

>-- REName --+-- ALL name name --.
             |                   |
             ‘-- name -----------+-->

NAME /ZONE5D
UNN
REN ALL /Z1 /Z2
name name
name


Locking a design element prevents it from being modified or deleted. The LOCK command allows either a single element to be controlled, or all its offspring too. (A complete Site can be locked if required.) This provides you with personal security control over your area of work. (General security restrictions affecting the whole Project are established in the Admin module of AVEVA E3D Design.)
LOCK ALL
The current element and all its offspring are locked.
UNLOCK
The current element is unlocked.
Examples
LOCK ALL
The current element and all its offspring are locked.
UNLOCK
The current element is unlocked.
>--+-- LOCK ----.
   |            |
   ‘-- UNLOck --+-- ALL --.
                |         |
                ‘---------+-- <snoun> --.
                          |             |
                          ‘-------------+-->

LOCK ALL
UNLOCK


DACMOD
BOOL
ATTR
True if DAC allows attribute of element to be modified
MODATT
BOOL
ATTR
True if attribute of element can be modified
MODERR
STRING(120)
ATTR
Returns the error text that would occur if attribute was modified

Attribute Name
Data Type
Qualifier
Description
DACMOD
BOOL
ATTR
True if DAC allows attribute of element to be modified
MODATT
BOOL
ATTR
True if attribute of element can be modified
MODERR
STRING(120)
ATTR
Returns the error text that would occur if attribute was modified


Information is provided on the creation of attribute classes and the creation methods.


A Programmable Macro Language (PML) attribute instance may be created for a system attribute or a User defined Attribute (UDA).
The class should not be confused with the attribute value. The actual Attribute value for a particular Element can only be accessed via the DBREF class or via the QUERY command. Comparing two Attributes just compares whether they identify the same attribute, the comparison does not look at attribute values in any way.