Database Management Reference Manual
Database Management Reference Manual
Reference Manual
AVEVA Solutions Limited
Disclaimer
1.1 AVEVA does not warrant that the use of the AVEVA software will be uninterrupted, error-free or free from
viruses.
1.2 AVEVA shall not be liable for: loss of profits; loss of business; depletion of goodwill and/or similar losses; loss of
anticipated savings; loss of goods; loss of contract; loss of use; loss or corruption of data or information; any
special, indirect, consequential or pure economic loss, costs, damages, charges or expenses which may be
suffered by the user, including any loss suffered by the user resulting from the inaccuracy or invalidity of any data
created by the AVEVA software, irrespective of whether such losses are suffered directly or indirectly, or arise in
contract, tort (including negligence) or otherwise.
1.3 AVEVA's total liability in contract, tort (including negligence), or otherwise, arising in connection with the
performance of the AVEVA software shall be limited to 100% of the licence fees paid in the year in which the user's
claim is brought.
1.4 Clauses 1.1 to 1.3 shall apply to the fullest extent permissible at law.
1.5 In the event of any conflict between the above clauses and the analogous clauses in the software licence under
which the AVEVA software was purchased, the clauses in the software licence shall take precedence.
Copyright
Copyright and all other intellectual property rights in this manual and the associated software, and every part of it
(including source code, object code, any data contained in it, the manual and any other documentation supplied
with it) belongs to, or is validly licensed by, AVEVA Solutions Limited or its subsidiaries.
All rights are reserved to AVEVA Solutions Limited and its subsidiaries. The information contained in this document
is commercially sensitive, and shall not be copied, reproduced, stored in a retrieval system, or transmitted without
the prior written permission of AVEVA Solutions Limited. Where such permission is granted, it expressly requires
that this copyright notice, and the above disclaimer, is prominently displayed at the beginning of every copy that is
made.
The manual and associated documentation may not be adapted, reproduced, or copied, in any material or
electronic form, without the prior written permission of AVEVA Solutions Limited. The user may not reverse
engineer, decompile, copy, or adapt the software. Neither the whole, nor part of the software described in this
publication may be incorporated into any third-party software, product, machine, or system without the prior written
permission of AVEVA Solutions Limited, save as permitted by law. Any such unauthorised action is strictly
prohibited, and may give rise to civil liabilities and criminal prosecution.
The AVEVA software described in this guide is to be installed and operated strictly in accordance with the terms
and conditions of the respective software licences, and in accordance with the relevant User Documentation.
Unauthorised or unlicensed use of the software is strictly prohibited.
© Copyright 1974 to current year. AVEVA Solutions Limited and its subsidiaries. All rights reserved. AVEVA shall
not be liable for any breach or infringement of a third party's intellectual property rights where such breach results
from a user's modification of the AVEVA software or associated documentation.
AVEVA Solutions Limited, High Cross, Madingley Road, Cambridge, CB3 0HB, United Kingdom.
Trademark
AVEVA and Tribon are registered trademarks of AVEVA Solutions Limited or its subsidiaries. Unauthorised use of
the AVEVA or Tribon trademarks is strictly forbidden.
AVEVA product/software names are trademarks or registered trademarks of AVEVA Solutions Limited or its
subsidiaries, registered in the UK, Europe and other countries (worldwide).
The copyright, trademark rights, or other intellectual property rights in any other product or software, its name or
logo belongs to its respective owner.
Database Management Reference Manual
Revision Sheet
Contents Page
Reference Manual
Introduction to Database Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . 1:1
Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:1
Project Organisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:1
Teams and MDBs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:2
Splitting Data Across Multiple DBs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:3
Database Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:3
Reference Number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:3
Name .............................................................. 1:4
Current Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:4
Change Element Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:4
Primary Database Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:4
Hierarchical Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:4
User Defined Hierarchies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:5
Element Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:5
Where the Primary Hierarchy is Used . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:6
Secondary Hierarchies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:6
Database Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:7
User Defined Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:7
Pseudo Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:7
Global Namespace for Attribute and Element Type Names. . . . . . . . . . . . . . . . . . . . . . . . . 1:8
Attributes of Physical Quantities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:8
Database Expressions and Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:8
Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:8
Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:9
Dumping out the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:9
Data Listings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:9
Reconfigurer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:9
Database Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:10
Data Access Control (DACs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:10
Errors Applicable to all Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:11
Integrity of Modifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:11
Element Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:12
Element Deletion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:12
Element Copy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:12
Element Move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:12
Attribute Modification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:12
Effect of Modifications on Dynamic Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:14
Database Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:14
Savework/Getwork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:14
Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:14
Session History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:15
Create a Stamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:16
Set a Comparison Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:16
Merge Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:16
Multiwrite Working . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:17
Multiwrite Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:17
Claim Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:17
Release Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:18
Performance Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:18
Potential Conflicts at SAVEWORK/GETWORK in a Multiwrite Environment . . . . . . . . . . . 1:18
Extracts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:18
Create Extracts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:19
Restrictions on Extracts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:19
Extract Sessions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:19
MERGE CHANGES on Extracts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:20
Extract Claims/Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:20
Extract Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:21
User Claims/Releases on an Extract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:21
Variants ............................................................. 1:22
Extract Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:22
Merge Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:22
Dealing with Deleted Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:24
Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:1
Attribute Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:1
Real Attributes of Physical Quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:2
Values of Physical Quantities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:4
Standard Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:5
SI Unit Prefixes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:8
Compound Units. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:9
Units of Absolute and Gauge (gage) Pressures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:10
Query Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:11
Query the List of Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:11
Standard Attribute Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:11
Query Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:12
dot Notation in PML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:13
Qualifier ............................................................. 3:13
Relative Positions, Directions, Orientations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:14
Summary of Related Pseudo Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:14
Set Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:15
Standard Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:15
Set a UDA Back to a Default . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:17
Set an Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:17
Single Value of an Array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:17
Special Syntax for Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:17
Special Syntax for LOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:18
Related Pseudo Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:19
PML Attribute Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:19
Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:19
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:19
PML ElementType Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:20
Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:20
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:20
Related Pseudo Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:21
Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:1
Format of Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:1
Operator Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:2
Nesting Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:2
Logical Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:2
Logical Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:3
Logical Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:6
Logical Array Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:12
Numeric (Real) Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:12
Numeric (Real) Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:13
ADD and SUBTRACT (+ and -) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:13
MULTIPLY and DIVIDE (* and /) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:14
Numeric (Real) Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:15
Real Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:24
Units and Physical Quantity Attributes in Expressions . . . . . . . . . . . . . . . . . . 9:25
Using IDs in Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:26
Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11:1
Comparisons Across Sessions and Stamps . . . . . . . . . . . . . . . . . 12:1
Change Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12:1
Query the Last Modification to an Element or Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . 12:1
Query the Session History for an Element or Attribute. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12:2
Query Details of a Specific Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12:2
Query Session Number for a Given Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12:2
Comparison Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12:3
Set the Comparison Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12:3
Query the Comparison Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12:4
MODIFIED Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12:4
CREATED Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12:6
This reference manual describes in detail the structure and methods of the internal
databases used within Marine. It is written for System Administrators who may be involved
in maintaining projects, and the databases from which they are created.
1.1 Project
It can be seen that DB /A is only in MDB /X, whereas DB /B is in both MDB /X and /Y.
Team access controls fundamental write access. Members of Team1 will always have write
access to DBs /A and /B, and read access to the remainder. For members of Team2 it will be
the opposite way around.
If a DB is included from another project then it is always read only regardless of team
membership.
These concepts are discussed in detail in the Administrator User Guide.
Thus, for example, for DB 1, the first element created will have a reference number of
=8193/0 (this will be the world element since this is always created first).
The reference number is never changed once an element has been created.
1.2.2 Name
In Outfitting any element may be given a name. The name always starts with a '/'. At the
user level, it is this name that is typically used to identify an element. Names may of course
be changed, thus there is no guarantee that the element named '/FRED' today is the same
as the element named '/FRED' yesterday.
An element need not have a name. For these elements Outfitting creates a constructed
name, consisting of the relative position in the hierarchy up to the first named element.
e.g. BOX 2 OF SUBEQUIPMENT 1 OF /VESS1
Whilst the constructed name can be used to identify elements, its use is even more volatile
than named elements, since the order of an element in a member's list may change.
The user can duplicate the name of an element in a Design (DESI), Production (MANU),
Schematic (SCHE) or Engineering (ENGI) databases in the current MDB. For example an
element can be named `/FRED´ in the DESI database and a different element can be
named ´/FRED´ in the MANU database.
This schema shows which elements are allowed where. For example, a WORLD may own a
SITE, or GROUPWORLD, whereas a SITE may own a ZONE, BOUNDARY, DRAWING or
GROUND model.
The same element type may occur in more than one place in the schema. In the above
example it can be seen that a BOUNDARY element may occur below a SITE or a ZONE.
All database schemas have a WORLD element at the root.
The actual element hierarchy can be viewed with the Outfitting explorer.
All element instances within an MDB are accessible at all times.
Most commands will work on secondary hierarchies. For example, if /GPSET1 is added to a
3D view then this is equivalent to adding both /VESS1 and /PUMP2 to the 3D view.
However, there are exceptions to this. In particular deleting a GROUP will not delete the
GROUP members; thus deleting /GPSET1 will not delete /VESS1 and /PUMP2.
Unlike the Primary hierarchy, secondary hierarchies may span different DBs.
The remaining attributes vary depending on the element type. The Database Schema
defines which attributes are available on an element type. The allowed attributes for an
element type may be ascertained using PML objects and other command queries.
Attributes may be one of the following types:
Integer Ref
Integer Array Ref Array
Real Position
Real Array Direction
Bool (or Logical) Orientation
Bool (or Logical) Array Attribute
String (or Text) ElementType (or Noun)
Datetime
A 'Ref' type is a pointer to another element. For example, on a BRANCH element the CREF
attribute points to the connected NOZZLE. The use of Ref attributes enables Outfitting to
model networks and other cross relationships.
The attribute type dictates how the attribute can be set with PML or specific syntax.
Since the value of a pseudo attribute is calculated from other attributes, it is not generally
possible to set their value directly.
1.6.1 Expressions
Database expressions can be of the following types:
• algebraic
• boolean (or logical)
• text
• Element ID
• position
• direction
• orientation
The contents of an expression may contain the standard operator and mathematical
functions along with the names of attributes and element identification.
Examples of expressions are:
Real Expression: (XLEN * YLEN * ZLEN * 2)
This expression simply multiplies the three attributes XLEN, YLEN, ZLEN together and then
multiplies by two.
The attributes refer to the current element. If attributes of other elements are required then
the OF syntax is used.
Boolean expression: (PURP EQ 'HS' AND AREA OF OWNER EQ 1)
The 'OF' keyword ensures that the AREA attribute is obtained from the owner of the current
element rather than the current element itself.
The main uses of expressions are:
• Catalogue parameterisation
• Template parameterisation
• Rules
• Drafting line styles
• User level collections and report
Database expressions are very similar to PML expressions. The major difference is that
database expressions may not contain other PML variables or functions. E.g. (XLEN *
!MYVAR) is not a valid database expression.
1.6.2 Rules
An attribute may be defined as a rule. For example, the attribute XLEN may be defined as a
rule by the expression (YLEN * 2).
The OF syntax is often used in Rule expressions to refer to other elements, e.g. (YLEN OF /
FRED * 2)
The result of the rule is stored against the attribute as for other attributes.
There are commands to recalculate the rule.
Rules may be either static or dynamic. If static, then the rule result will only be recalculated
on demand. If dynamic, then the result will be recalculated every time an attribute within the
expression changes, e.g. for the above rule, if YLEN is modified, then XLEN will be
recalculated automatically. The dynamic linkage of rules may be across elements and
across DBs.
1.7.2 Reconfigurer
Reconfigurer is similar to 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.
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.
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. Outfitting will always check that this is the case
prior to allowing the modification.
After setting the CREF on /N1 to /B1, the end result is:
1.10.1 Savework/Getwork
Data is only saved to the database on demand. Similarly a user will only see changes made
by others on demand. In order to make changes visible to other users two steps must occur:
1. The user making the changes must do a Savework
2. The reader must do a Getwork
For most applications, the savework/getwork actions are totally in the hands of the user.
1.10.2 Sessions
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 the
user does want to see the changes made by others then he must do a 'Getwork'. 'Getwork'
will always reposition the user 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.
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.
1.12 Extracts
Extracts are an extension of the multiwrite facilities.
The extra functionality offered by extracts is:
• They allow long term claims, i.e. 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.
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 MDB as for any other DB. Two extracts from the same
extract family cannot be included in the same MDB.
In this example the extract 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.
If a user does an extract claim to the Working Extract the following logic will be used:
-if YES
do nothing
-if NO
-if NO
-if YES-
The extract claim may fail for the same reasons that a user claim may fail, i.e.:
• Another user/extract has the item claimed
• The element is modified in a later version, hence a refresh is needed first.
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.
1.12.8 Variants
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, e.g. 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.
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.
Partial Issue The Issuing of a subset of the modifications made in the current extract
to the parent extract.
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.
The granularity of this merge is at the attribute level, i.e. 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.
Outfitting ensures that all merges are valid at the raw database level, i.e. the data will be
DICE (Database Integrity Checker) clean. However it is not possible to ensure that the data
is consistent in engineering terms. Thus it is highly recommended that when variant data is
flushed back, Datacon checks and Clasher checks are run on the resulting version.
The definition of the different sessions for issue and flush are:
Note: The standard flush and issue commands also do a refresh. This ensures that there is
a suitable base session for the next extract operation.
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:
1. Once an element is deleted, then it stays deleted regardless of any conflicts in merging.
For example, user 1 deletes /BOX, whereas user 2 changes an attribute of /BOX. If
user 1 issues his change before user 2, then user 2's change will have no affect.
2. If the element type is changed, then the merge is done at the element level rather than
the attribute level, i.e. all the current attribute values are taken regardless of whether
they have changed. Any attribute changes made by other users will thus be lost.
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.
If this case the propagation algorithm will send the sessions 20 to 39 to the secondary
location.
The extract claim operation is thus asynchronous. The user has to wait to discover if the
claim succeeded or not.
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.
1.14.2 Backtrack/Rewind
The system administrator may remove the last one or many sessions from the DB.
This section covers aspects of database navigation. Many examples are given during a
DESIGN session but are also relevant to the Outfitting Draft module.
2.10.1 Climb Up
The following syntax is valid:
OWNER climb to owning element. The owning element becomes the 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
Example
Current list is:
1 BOX /MyBoxA
2 CYL /MyCylA
3 CYL /MyCylB
4 RTOR /MyRtorA
5 CYL /MyCylC
6 BOX /MyBoxB
7 BOX /MyBoxC
8 CYL /MyCylD
9 BOX /MyBoxD
The Current element is /MyCylC, as highlighted.
First int <element type> Go to nth element of given type in members list
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
Example
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:
1 BOX /MyBoxA
2 CYL /MyCylA
3 CYL /MyCylB
4 RTOR /MyRtorA
5 CYL /MyCylC
6 BOX /MyBoxB
7 BOX /MyBoxC
8 CYL /MyCylD
9 BOX /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
e.g.
/MyCylB
END
The CE is /MyEqui as before, but with the current position at /MyCylB
FIRST ZONE Moves CE to /Zone1 (assuming that this is the first zone)
2.15 ID Expressions
The above commands are all examples of an ID (identification) 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 PML variable.
Querying an expression or assigning it to a PML variable dos NOT change the CE.
Q ( NEXT BOX)
!MyEle = ( next box )
!MyEle = ( next box of /VESS1 )
!MyEle = (SPRE )
Assigning an ID expression to a PML variable is a common way to write PML.
2.16.1 UDETs
A UDET may be used wherever an element type is valid.
e.g.
(:MYBOX 1 OF /VESS1 )
NEXT :MYBOX
FIRST 2 :MYBOX
The following exception applies:
• When climbing, either the UDET or the base type may be specified.
e.g.
At a BOX below /VESSEL which is a :MYEQUIP
:MYEQUIP - will climb to /VESSEL
EQUIP - will also climb to /VESSEL
3 Attributes
www.bipm.org/utils/common/pdf/si_brochure_8_en.pdf
Some conversions are experimentally determined (e.g. 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
http://physics.nist.gov/Pubs/SP811/appenB8.html
When more accurate values greater than 7 significant figures are obtainable from other
sources such as
http://en.wikipedia.org/wiki/Template:Convert
and elsewhere these have been used in preference.
There is one exception to this rule. The British Thermal Unit (BTU) which is defined by
PDMS to be a 'typical' value of 1055.16kJ and not that defined by Fifth International
Conference value of 1055.05585262kJ.
Where there are US and SI spelling alternatives BOTH versions are supported for example
litre and liter, millimetre and millimeter etc.
Note: " and ' qualifiers are NOT accepted for minutes and seconds or arc units.
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).
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
However when compound units are stored by the system, in particular when setting current
working units or setting 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:
• The named unit itself
• An optional power of the unit (multiple and/or reciprocal)
• An optional SI Prefix
When there is only one component it can be one of:
• Any standard unit
• -8>power>+8
• SI Prefixes femto to Exa
If there are two components these are defined with:
• Any standard unit
• -8>power>+8
• SI Prefixes femto to Exa for first component, and milli to Mega for second
If there are three components these are defined with:
• Any standard unit for first components, limited to 64 common units for last
• -8>power>+8
• NO SI Prefixes
If there are four components these are defined with:
• Limited to a set of 32 common units
• -2>power>+2 except the last unit which has power range of +/-4
• NO SI Prefixes
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 .gauge or .abs will be appended to compound units when quantities are formatted
as gauge or absolute pressures.
A trailing “a” or “g” will be accepted on standard units (and their abbreviations) on input, and
on string conversion.
• 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
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)
• These can be set in format objects (both PML and .Net) and used to format generic
pressure quantities.
• They can be set for 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)
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
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.
VAR !RESULT XLEN
!RESULT will be of type TEXT
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.
VAR !RESULT XLEN
Will store the text equivalent of the value of the XLEN attribute in current distance units.
Q VAR !!CE.XLEN
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
<REAL> 18.1102362204724in
3.3.5 Qualifier
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:
1. Querying a ppoint position (PPOS) requires the ppoint number
2. The ATTMOD attribute can be used to query when an attribute was modified. The
qualifier is the attribute to test for modification.
3. A direction/position may be queried wrt another element.
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.
Q PPOS(1) - PPOS has an int qualifier
Q LASTMOD(ATTNAME XLEN) - LASTMOD has an attribute qualifier
Q MEMBER(TYPENAME BOX) - MEMBER has an optional element type qualifier
For 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
!q=object array()
!q[1] = 1
q var !!ce.attribute('PPOS', !q)
to query list of nominal bores:
!q=object array()
!q[1] = 'BORE'
q var !!ce.attribute('NOMBMM', !q)
to query Equipment members:
!q=object array()
!q[1] = object elementtype('EQUI')
q var !!ce.attribute('MEMBER’, !q)
!!CE.SHOP ( !A GT !B)
SHOP ( $!A GT $!B)
DATETIME attribute - allows a datetime value, NOW sets current date and time whereas
TODAY sets current date. The datetime is parsed from a text and formats supported are
ISO and the current locale.
!!CE.STADAT= ‘2012-05-20 11:00:00’
STADAT NOW
STADAT TODAY
STADAT UNSET’
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.
CREF =123/456
CREF /MYBRAN
CREF UNSET
CREF NULREF
!!CE.CREF (FIRST MEMBER OF /PIPE1 )
Note: There must be a space between the name and the ‘)’
WORD attribute - If assigning to a PML variable, then allows a text value or text expression.
!A = ‘FLG’
!!CE.TCON = !A + ‘D’
If assigning via the attribute name, then it must be a word.
TCON FLGD
POSITION attribute - allows a position or position expression.
HPOS N 100 U 100
!!CE.POS = (N 100 from /MYEQUIP )
AT N 100 from /MYEQUIP
Note: The POS attribute can not be set by name, use AT syntax instead.
Do not use brackets if setting by attribute name.
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.
XLEN 5kg
!!CE.XLEN = 5kg
XLEN $!W where !W has been set to 5kg
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.
DESP 1 2 3 - set up initial values
DESP NUMB 4 99 - OK, as at end
DESP NUMB 6 100 - Error, as would leave a gap
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.
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).
Command Syntax:
>-- NAMe --+-- ALL name name --.
| |
‘-- name -----------+-->
>-- UNName -->
Example:
REN ALL /Z1 /Z2 All occurrences of /Z1 in the names of the current element
and its offspring will be changed to /Z2.
Command Syntax:
>-- REName --+-- ALL name name --.
| |
‘-- name -----------+-->
Examples:
LOCK ALL The current element and all its offspring are locked.
Command Syntax:
>--+-- LOCK ----.
| |
‘-- UNLOck --+-- ALL --.
| |
‘---------+-- <snoun> --.
| |
‘-------------+-->
3.5.1 Creation
A PML attribute instance may be created for a system attribute or a UDA.
!AXLEN = object attribute('XLEN')
!UINT = object attribute(':UINT')
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.
3.5.2 Methods
The Attribute instance can then be used for querying the ‘meta data’. i.e. data about data.
The methods of the class allow the following to be queried.
Note: We do yet not support direct usage of this class in other syntax.
3.6.1 Creation
An ElementType instance may be created for a system Element type or a UDET.
!EQUI = object elementtype('EQUI')
!UEQUI = object elementtype(':MYEQUI')
The ElementType instance can then be used for querying the ‘meta data’. i.e. data about
data. The methods of the class allow the following to be queried.
3.6.2 Methods
The available methods are:
Note: We do yet not support direct usage of this class in other syntax.
4 Database Modification
This chapter describes the commands to create, copy and modify database elements.
Note: The Q LIST query will tell you which element types you can create as members of
the Current Element.
You can then create a new element, set its attributes and, if required, create further
elements as its members.
For example, if the Current List Position is at member 4 (/VALV1) of the Member List.
Figure 4:1. Current Element and its Member List (illustrating movement along list)
the command
NEW TEE /TEE2
adds a new Tee at list position 5 (between /VALV1 and /ELBO2) and names it /TEE2. The
Member List of /BRAN1 thus becomes
To insert the new Tee as the first or last component in the Member List, access the Branch
Head or Tail, respectively, before giving the NEW TEE command.
NEW TEE AFTER LAST ELBO Specify first or last member of a given type (last
Elbow in the list)
NEW TEE AFTER NEXT 3 Specify position relative to Current List Position
NEW TEE BEFORE LAST FLAN Specify first or last member of a given type
The new Tee, which is unnamed, becomes list member 7, /ELBO3 becomes list member 8, /
FLAN2 becomes list member 9, and so on.
Consider the following examples, where the Current Element is /BRAN1 with the Member
List illustrated in Figure 10-2:
the command
REORDER /ELBO3
moves /ELBO3 to position 5, immediately following the Current List Position, giving the new
Member List
To insert an existing element into the Member List of the Current Element, when it is not
already a member of that list, use one of the commands
INCLude element_id
INCLude element_id BEFore list_position
INCLude element_id AFTer list_position
where element_id specifies an element which is to be moved (which may be anywhere
within the DB hierarchy as long as it is at an appropriate level) and where list_position may
be specified in any of the ways described in Database Navigation and Query Syntax.
If list_position is omitted, the intended position is assumed to be immediately after the
Current List Position.
For example, starting with the simple hierarchy
the command
INCLUDE /PIPE2
moves /PIPE2 (and all its offspring) to the position immediately following the Current List
Position. Ownership of /PIPE2 passes from /ZONE2 to /ZONE1, resulting in the new
hierarchy
unlocked in the target element). Additionally, and this is what makes the facility so powerful,
all offspring of the source element are copied as offspring of the target element.
Note: If the Current Element already has members, it is not possible to make it a copy of
another element in this way.
You may specify automatic renaming of the Current Element and its offspring as part of the
copying process. Without this the new elements will be unnamed, since Outfitting does not
permit two elements in the same DB hierarchy to have identical names. You may also
choose to copy only the members (and their offspring) of the source element, leaving the
attributes of the Current Element itself unchanged.
To copy a complete element and all of its offspring, after creating a new Current Element
of an appropriate type, enter
COPY element_id
where element_id identifies the source element to be copied.
For example, to create a new item of Equipment which is an exact replica of a previously-
defined Equipment, you might use the command sequence (at Zone level)
NEW EQUI /EQUIPB
COPY /EQUIPA
This creates /EQUIPB as the Current Element and then turns it into an exact copy of /
EQUIPA. All attributes and members of /EQUIPB now have the same settings as those of /
EQUIPA, including its position, orientation etc., and so you will probably now want to move
one of the Equipments to a different location.
To copy all offspring of an element, so that they create duplicate offspring for the Current
Element, enter
COPY MEMbers OF element_id
The position, orientation, etc., of the Current Element now remain unchanged, but it
acquires new members which are derived from the specified source element and which are
correctly positioned relative to the Current Element.
To copy selected offspring of an element, so that they create duplicate offspring for the
Current Element, enter
COPY MEMbers integer TO integer OF element_id
For example, the command sequence
NEW BRAN /SIDEARM
COPY MEMBERS 12 TO 20 OF /MAINLINE
creates a new Branch named /SIDEARM whose components replicate that part of the
existing Branch /MAINLINE between the specified list positions. The attributes of the Branch
/SIDEARM itself are unaffected by the COPY command, so that its position, orientation, etc.
(as defined by its Head and Tail settings) remain unchanged by the addition of its new
members.
To copy attributes from an identified element into the current element, type
COPY ATTributes OF element_id
This causes all attributes (except for references to elements in DESI databases and
OWNER) to be copied to the current element. Or:
COPY LIKE element_id
This is similar to the ATTRIBUTES option, except that as well as DESI references not being
copied, neither are any position, direction, orientation or angle attributes.
In both cases, the SPREF and CATREF are also not copied between elements of different
types.
To copy elements alongside their original positions, type
COPY ADJ/ACENT select
This option causes a list of elements, defined by the selection criterion select, to be copied
alongside their original positions in the database. So if the list includes a SCTN and a PNOD
(for example) then each of these items would be copied so that the new SCTN shares the
same owner as the old SCTN and the new PNOD shares the same owner as the old PNOD.
As this option copies elements, rather than just attributes, other COPY options, such as
RENAME, are valid.
To copy all or part of an element and rename the copies, append the command
... REName old_name new_name
to the corresponding COPY command line.
For example, the command
COPY /FRACT1/PIPE RENAME /FRACT1 /FRACT2
copies all attributes and offspring of /FRACT1/PIPE into the Current Element. Where /
FRACT1 occurs as the name or part of the name, it is changed to /FRACT2 in the Current
Element and its offspring. Thus the Current Element itself is now named /FRACT2/PIPE,
and so on.
SAVEWORK saves the current DESIGN changes without leaving DESIGN. It is good
practice to use this command on a regular basis during a long session to ensure maximum
data security.
As well as a comment, an optional number n can be used to specify a particular database
for the command. The number is the number of the database in the order output by the
STATUS command (see Project). If no number is given, the SAVEWORK applies to the
whole MDB. An example of Savework syntax is SAVEWORK ‘comment’ 1.
GETWORK refreshes the view of all READ databases to pick up any changes that other
users may have made since you first opened them. The optional n works in the same way
as for SAVEWORK. You would normally only use GETWORK if you know of specific
changes you wish to pick up and use. Please note that GETWORK slows up subsequent
database access, as the information has to be re-read from disk. Therefore, you should use
this command sparingly.
5.1 Sessions
Each time you enter DESIGN or save your design changes, a new session is created for
each database changed. You can then query when specific items of design data were
modified by reference to the corresponding session number(s). Sessions can be used by
the System Administrator to backtrack changes to a given date or session if necessary.
Note: Sessions 1 and 2 are created in ADMIN (when the DESIGN DB and its World
element, respectively, are created), so the first true session will be Session 3.
Example:
Command Syntax:
>-- SESSION COMMENT -- text -->
Querying:
Q SESSComment integer
where integer is the session number.
Each time you enter DESIGN or save your design changes, a new session is created for
each database changed. You can then query when specific items of design data were
modified by reference to the corresponding session number(s). Sessions can be used by
the System Administrator to backtrack changes to a given date or session if necessary.
Claiming can be either explicit, where the user must use the CLAIM command before
attempting to modify the element, or implicit, where the claim is made automatically when
the user tries to modify the element. The claim mode is set when the DB is created. For full
details see the Administrator Command Reference Manual.
Examples:
CLAIM /ZoneA /EQUIP100 /PIPE-100-A
Claims named elements
CLAIM /ZoneA HIERARCHY
Claims named element and all of its owned hierarchy
CLAIM /ELBOW-33
Claims Branch which owns named component, since ELBO is not
a significant element
Examples:
UNCLAIM /PIPE-100 /PIPE-200
Unclaims named elements
UNCLAIM ALL
Unclaims all elements currently claimed
Command Syntax:
.---------------.
/ |
>-- CLAIM ----*-- elementname --+-- HIERARCHY ---.
| |
‘----------------+-->
.---------------.
/ |
>-- UNCLAIM ---*-- elementname --+-- HIERARCHY ---.
| | |
‘-- ALL ----------+----------------+-->
Examples:
EXTRACT CLAIM /STRU1 /STRU2 /STRU3
Claims named elements to the extract
EXTRACT CLAIM /STRU1 /STRU2 /ZONE-A HIERARCHY
Claims the named elements, and all the elements in the hierarchy
to the extract
The HIERARCHY keyword must be the last on the command line. It
will attempt to claim to the extract all members of the elements
listed in the command which are not already claimed to the extract.
EXTRACT FLUSH DB PIPE/PIPE ‘Description of flush’
Writes all changes to the database back to the owing extract. The
Extract claim is maintained.
EXTRACT FLUSH /STRU1 /STRU2 /STRU3 ‘Flushing three structures’
Writes the changes to the named elements back to the owing
extract. The Extract claim is maintained.
EXTRACT ISSUE DB PIPE/PIPE ‘Issuing /pipe’
Writes all the changes to the database back to the owning extract
and releases the extract claim
EXTRACT ISSUE /ZONE-A HIERARCHY ‘Issuing /zone’
Examples:
Writes all the changes to the named element and all elements
under it in the hierarchy back to the owning extract and releases the
extract claim
EXTRACT ISSUE /STRU1 /STRU2 /STRU3 ‘Issuing three structures’
Writes the changes to the named elements back to the owning
extract and releases the extract claim
EXTRACT RELEASE DB PIPE/PIPE
Releases the extract claim: this command can only be given to
release changes that have already been flushed.
EXTRACT RELEASE /STRU1 /STRU2 /STRU3
Releases the extract claim: this command can only be given to
release changes that have already been flushed.
EXTRACT RELEASE /ZONE-A HIERARCHY
Releases the extract claim to the named element and all: elements
under it in the hierarchy.
EXTRACT DROP DB PIPE/PIPE ‘Dropping /Pipe’
Drops changes that have not been flushed or issued. The user
claim must have been unclaimed before this command can be
given.
EXTRACT REFRESH DB MYTEAMPIPING
This will refresh the extract MYTEAMPIPING with changes made
on the parent extract,
The elements required can be specified by selection criteria, using a Programmable Macro
Language (PML) expression. For example:
EXTRACT CLAIM ALL STRU WHERE (:OWNER EQ 'USERA') HIERARCHY
Command Syntax:
>- EXTRACT -+- FLUSH ---------------.
| |
|- FLUSHWithoutrefresh -|
| |
|- RELEASE -------------|
| |
|- ISSUE ---------------|
| |
|- DROP ----------------| .-------<-------.
| | / |
‘- REFRESH -------------+--*-- elementname --+- HIERARCHY -.
| |
| |
| |
‘-- DB dbname ---------------------+->
For this example, take the case of a database PIPE/PIPE, accessed by USERA, with two
extracts. Users USERX1 and USERX2 are working on the extracts.
USERA creates a Pipe and flushes the database back to the owning database, PIPE/PIPE.
The results of various Q CLAIMLIST commands by the three Users, together with the
extract control commands which they have to give to make the new data available, are
shown in the Figure 6:1.: Querying extract claimlists.
Q CLAIMLIST OTHERS
tells you want you can't claim
When you create an element, Outfitting only sees it as a user claim, not an extract claim,
until the element is flushed. It will then be reported as an extract claim (as well as a user
claim, if it has not been unclaimed).
Note that a change in the claim status of an existing element will be shown by the
appropriate Q CLAIMLIST command as soon as appropriate updates take place, but a user
will have to GETWORK as usual to see the changes to the DESIGN model data.
We recommend that:
• Before you make a user or extract claim, you should do an EXTRACT REFRESH and
GETWORK.
• If you need to claim many elements to an extract, it improves performance if the
elements are claimed in a single command, for example, by using a collection:
EXTRACT CLAIM ALL FROM !COLL
Q DBNAME Returns the name of the database which you are actually
writing to.
Q CLAIMLIST Outputs a list of all elements currently claimed by yourself:
Q CLAIMLIST OTHE Outputs a list of all elements currently claimed by other
users who are accessing the same DB:
Q CLAIMLIST Shows the extract claimlist for all the writable extracts in the
EXTRACT MDB.
Q CLAIMLIST Shows the extract claimlist for the named extract DB.
EXTRACT DB dbname
Q CLAIMLIST Shows the elements claimed to the current extract and not
EXTRACT FREE DB claimed to another extract or user. That is, the elements
dbname which can be released.
Q CLAIMLIST Shows the elements claimed to the current extract and
EXTRACT OTHER DB claimed to another extract or user.
dbname
Q CLAIMLIST Shows the extract claimlist for a CONTROLLED named
CONTROL DB dbname extract DB.
Q DBAC Queries the access mode of the database. DBAC can have
the text settings CONTROL, UPDATE or MULTIWRITE.
Q DBCL Queries the claim mode of the database. DBCL can have
the text settings EXPLICIT or IMPLICIT.
Q LCLM Queries whether or not the current element is claimed by
another user. Returns TRUE or FALSE.
Command Syntax:
>-- Q CLAIMLIST --+- OTHER -----.
| |
|- EXTRACT ---+- OTHER --.
| | |
| |- FREE ---|
| | |
| ‘----------|
| |
|------------------------+-- DB dbname --.
| |
‘----------------------------------------+-->
Claim related:
Extract related:
It is possible to undo and redo many operations. The undo mechanism is managed by
Outfitting using a stack of transaction objects.
Each transaction object records the change in the state across the transaction.
The new descriptions are then:
MARKDB ‘comment’ - Complete the current transaction and starts a new transaction.
UNDODB - Undo the last transaction. If there is a current transaction then this is completed.
Multiple Undos are allowed.
REDODB - Redo to next mark. Multiple Redos are allowed. A redo is only valid after an
UNDO. Any database change after an UNDO invalidates a REDO.
REDODB Redo to next mark. Multiple Redos are allowed. A redo is only
valid after an UNDO. Any database change after an UNDO
invalidates a REDO.
A group element can hold in its members list a number of design elements from any
combination of hierarchic levels, they may also span multiple DB’s. You can use any
appropriate design operation to act upon all of these individual elements simply by carrying
out the operation on the group.
Groups are particularly useful when there is a need to create a secondary hierarchy of
elements. For example a set of elements for a project may span more that one site, if this is
the case it is difficulty to identify where in the hierarchy these elements occur. With a group
you can easily query its members and see the hierarchy of elements contained within it.
A group is a DESIGN database element in its own right, and is therefore stored
automatically for use in later sessions when you save database changes.
The Elements which make up a group within the DESIGN database are shown below:
GPWL (Group World) Is a top level administrative element. A GPWL may hold multiple
GPSET (Group Set) elements.
GPSET contains groups of items (GPITEM). A GPSET element has Name, DESC, and
FUNCTION attributes.
GPITEM These are elements within a database which are to be grouped under a Group Set
(GPSET). Elements from different databases can all be grouped into the same Group Set. A
GPITEM has the following attributes Name, DESC and SITEM.
It is possible to nest Group Sets within other Group Sets. To achieve this structure a GPSET
can own another GPSET or a GPITEM can point back onto a GPSET. The following figure
illustrates this:
By default the form is populated with all GPWLs and GPSETs in the current MDB and
defaults to the first GPSET in the first GPWL, the Group Members grid will be populated with
the contents of the GPSET.
The Groups form has the following parts:
Control Pulldown
1. Create Group World - Allows the user to create a new Group World. A Group World is
created in the hierarchy at the point of the currently selected item.
2. Create Group Set - Allows the user to create a new Group Set below the currently
selected Group World.
3. Close - Will close the Groups form.
This allows the user to navigate the database hierarchy in exactly the same way as the
standard explorer window in the DESIGN module. The benefit of having this accessible
directly from this form allows the user to quickly select elements to include in a Group set.
This pulldown will expand to hold any Group Worlds created in the database hierarchy.
Changing this pulldown will cause the Groups sub form to display all the Group Sets under
the selected Group World.
The Groups sub form displays all the Group Sets which have been created below a Group
World. Selecting a Group Set will cause the Group Members Grid to update.
This grid displays all of the elements which have been associated with the currently selected
Group Set (from the Groups sub form).
Maintenance of Groups is carried out through a set of menus accessible through right
clicking the mouse.
Right clicking the mouse in the explorer window will give the following options
1. Add Current Element - Add the currently selected element to the Group Set selected in
the Groups Sub Form
2. Add Current Element Members - Add currently selected element and all its members to
the Group Set selected in the Groups Form
3. Remove Current Element - Remove the currently selected element from the Group Set
selected in the Groups sub form
4. Remove Current Element Members - Remove the currently selected element and all its
members from the Group Set selected in the Groups sub form
5. Add From Current List
6. Remove From Current List
Right Clicking the mouse in the Members Grid will give the following options.
1. Remove all - Remove all of the elements and their members from the Group Set
currently selected in the Groups sub form
2. Add All to View - Will add all of the elements and members of the Group Set currently
selected in the Groups sub form into the Design layout of the current project.
3. Remove Selected - Remove the currently selected element from the Group Set
currently selected in the groups form.
4. Add Selected to View - Add the currently selected element into the design layout of the
current project.
5. Navigate - Will move the explorer window to the position in the hierarchy of the
selected element
Examples:
Adds /ZONE1 and /VALVE2 to the current Group, starting from the
current list position
Removes /ZONE1 and /BOX3 from the current Group and moves
the current list position pointer to the Head position
Adds all offspring of /ZONE1 and /ZONE2 which are of types Equip
or Branch to the current Group, starting from the current list position
Command Syntax:
>--+-- GADD -----. .-------------.
| | / |
‘-- GREMove --+---*-- <selatt> ---+--->
Examples:
DELETE GPSET
Only the current element and any Offspring that are GPSETs will be
deleted.
DELETE GPWLD
Only the current element and any Offspring that are GPSETs will be
deleted.
Examples:
9 Expressions
This section explains the PML 1 expressions package. These facilities are needed within
AVEVA products, for example, to define report templates in Outfitting.
Expressions have types. For example, you can have numeric expressions, text expressions
and logical expressions. All the elements in an expression must be of the correct type. For
example, if you have a two numbers, x and y, and two text strings text1 and text2, the
following expression is meaningless:
x + text1 $
Real expressions also have a physical dimension. This may be NONE when all values in the
expression are purely numerical, but if any value has a physical dimension (such as being a
length or mass) then all other values must be compatible with it and the result of the
expression may have a physical dimension, or it may evaluate to a pure numerical value
(1inch / 1mm = 25.4).
The following types of expressions are available:
• Logical Expressions
• Logical Array Expressions
• Numeric (Real) Expressions
• Numeric (Real) Functions
• Text Expressions
‘This is text’
There must be a space between each operator and operand. For example:
x + y
Use round brackets to control the order of evaluation of expressions and to enclose the
argument of a function.
SIN(30)
In general, you do not need spaces before or after brackets, except when an Outfitting name
is followed by a bracket. If there is no space, the bracket will be read as part of the name.
(NAME EQ /VESS1 )
Operator Comments
FUNCTIONS
*/
+-
NOT
AND
OR
( (SIN(!angleA) * 2) / SIN(!angleB) )
• Logical functions.
Operator Comments
AND
GT, GE, LE, LT The operators GE, LE, GT and LT may only be used with
numbers and positions. For more information, see Positions,
Directions and Orientations in Expressions.
NOT
OR
Note: The operators EQ, NE, LT, GT, LE and GE are sometimes referred to as comparator
or relational operators; NOT, AND and OR are sometimes referred to as Boolean
operators. See also Precision of Comparisons for tolerances in comparing numbers.
AND
Description Perform the logical AND between two logical values. Treats
unset values as FALSE.
Side Effects If one of the values is undefined and the other one is FALSE,
the result is FALSE.
EQ and NE
NOT
OR
Side Effects If one of the values is undefined and the other one is TRUE,
the result is TRUE.
BADREF
DEFINED,UNDEFINED
CREATED
DELETED
EMPTY
IFTRUE
MATCHWILD
MODIFIED
UNSET
VLOGICAL
BADREF
CREATED
DELETED
EMPTY
IFTRUE
MATCHWILD
MODIFIED
Synopsis
.-----------------------------------.
/ |
>- MODIFIED-(-+- attname -------*- DESCENDANTS --+-+-comma +-attname -’
| | | |
|- DESCENDANTS -. |- SIGNIFICANT --| |
| | | | |
|- SIGNIFICANT--| |- PRIMARY ----- | |
| | | | |
|- PRIMARY -----| |- OFFSPRING-----| |
| | | | |
|- OFFSPRING ---| ‘----------------’ |
| | |
| | |
| | |
‘---------------+--------------------+--+-- ) - OF - id Æ
|
‘-Æ
Q (BUIL OR
MODIFIED()OR
ELECREC OF NEXT )
Errors None.
The MODIFIED, DELETED and CREATED functions are not implemented within PML2
expressions.
UNSET
Errors None.
VLOGICAL
VLOGICAL is used for the late evaluation of variables.
Description With one argument, return the value of the scalar variable or
the value of the array variable element as a logical.
With two arguments, return the value of the element
corresponding to the index number as a logical.
The rules of conversion are:
TRUE for the strings ’T’, ’TR’, ’TRU’ or ’TRUE’ (case
insensitive) or any numeric value not equal to zero;
FALSE for the strings ’F’, ’FA’, ’FAL’, ’FALS’ or ’FALSE’ (case
insensitive) or a numeric value equal to zero.
Scalar variables may not be indexed. For example,
VTEXT(!var[1]) will return an error.
Array variables must have an index. For example, VTEXT
(!array) will return an error.
The value cannot be translated into a logical.
See also VTEXT, used for late evaluation when a text result
is required; and VVALUE, used for late evaluation when a
numeric result is required.
Side Effects If the scalar variable, the array variable, or the array variable
element does not exist, the result is undefined.
power indices appended. For example: 100 mm, 10 exp 5 cubic feet, 10m3,
20newton.m-2. Feet and inches can be shown as, for example, 10'6.
• Outfitting attributes of type number, for example: XLEN.
• Position, direction and orientation attributes which have a subscript to indicate which
part of the array is required. For example, POS[2] means the second element of the
POSITION attribute; that is, the northing. Note that position, direction and orientation
attributes without subscripts can only be used in number array expressions.
• The keyword PI (3.142).
• Numeric operators.
• Numeric functions.
Operator Comments
+ Addition.
- Subtraction.
* Multiplication.
/ Division.
Side Effects Units are consolidated across add and subtract and the
result is returned in current units of the physical quantity, for
example when current distance units are inches
q (1ft + 100mm) will return 15.9in
If only one value has a unit qualifier the other is assumed to
be in current units of that physical quantity for example:
q (1ft + 100 ) will return 112in
If the two values have conflicting units a warning is issued
and a value is returned with no units assuming both values
are in the database units of their respective quantities which
is mm and Kg in the example:
q (1ft + 1kg ) will return 305.8
Side Effects Units are consolidated across Multiply and Divide. The result
is returned in the current units of the physical quantity of the
result for example when current units of pressure are psi
then:
q (20kgf/ 1 cm2 ) will return 284.47PSI
If one value has no unit it is assumed to be a scaling factor.
This also applies to reciprocal physical quantities. For
example:
for (10 / XLEN) will return 2mm-1 when XLEN is 5mm
Function Comments
ARRAYSIZE ( variable-name )
Gives the size of an array variable.
ARRAYWIDTH( variable-name )
Gives the largest display width of any string in array
variable-name.
Function Comments
OCCUR ( text1, Gives the number of times string text2 occurs in string
text2 ) text1.
VVALUE ( variable-name )
Used for late evaluation of variables. Gives a real value.
ABS
ALOG
ARRAY
ARRAYSIZE
Side Effects If the array variable does not exist, the result is undefined.
ARRAYWIDTH
DISTCONVERT
INT
LENGTH
ALOG
MATCH
NEGATE
NINT
OCCUR
REAL
POWER
SQRT
Side Effects Units are consolidated across SQRT. The resultant value will
be in current units of that quantity.
If the resultant quantity has no recognised physical
dimension a warning is given and the value return will be a
number relating to the input value in database units.
VVALUE
VVALUE is used for the late evaluation of PML variables.
Side Effects If the scalar variable, the array variable or the array variable
element does not exist, the result is undefined.
9.6.2 WRT
The WRT keyword is used to toggle between absolute and relative units.
When we specify an element (or attribute of an element) we are specifying an absolute point
in world space. The point can be given in world space or some other axis. Normally the
answer is required relative to the owner axis system and this is taken as the default. For
example:
If we require the result in some other axis system then the WRT keyword is used. For
example:
The default is that Cartesian coordinates are in the owning element’s axis system. This
absolute position can be expressed in different coordinate systems: the default is again the
owner’s axis system.
Note: The CONSTRUCT syntax uses the world as the default axis.
Example
Item Comments
The result of Q (N 100 WRT /BOX1), will depend on the current element.
Location Result
9.6.3 FROM
In some cases we require an offset from a fixed point, other than the position of an item. For
example, a point or attribute.
The FROM syntax is used for this. We may still use WRT in combination with FROM, but in
this case the WRT is only used to determine the axis direction and not the offset, since the
offset is specified by the FROM part.
Consider the following:
Item Comments
Item Comments
The result of Q (N 100 WRT /* FROM /BOX1), shown as ⊗ in , will depend on the
current element.
Location Result
World, Site, and Zone (200,200,0) since the offset of N100 is applied in
world axis rather than /BOX1 axis.
Location Result
Equipment (0,0,0)
Box (0, -100, 0), because the axis for the result is the
Equipment.
Location Result
Box (0, -100, 0), because the axis for the result is the
Equipment.
For positions entered by the user, only those coordinates which are given by the user are
defined. For example:
For the EQ operator, all the pairs of defined coordinates should be equal. For NE, only one
pair of defined coordinates need be different. For GT (LT,GE,LE), all the defined coordinates
of the first position should be greater than (less than, greater than or equal to, less than or
equal to) the defined coordinates of the second position. This means that GE is not the
opposite of LT and LE is not the opposite of GT.
If no coordinate of the two positions are defined for a common axis (e.g. ’N10’ and ’W4D7’),
the result of the comparison is undefined.
Examples
9.6.5 POLAR
The POLAR keyword allows positions to be defined in terms of a distance in a particular
direction from a point.
9.6.6 Direction
The basic ways of defining a direction are:
• Direction attribute plus optional WRT. For example,
HDIR OF /PIPE1 WRT /*
• Cartesian direction. For example,
N 45 W
• Cartesian direction WRT to an element.
• All Cartesian directions are returned in the axis of the owner of the current element. For
example:
(U WRT CE )
• will return the Z axis of the current element relative to its owner.
Q ( Z WRT /SCTN )
• will return the Z axis direction of /SCTN relative to the owner of the current element. For
example, if the result is required in world coordinates the current element must be the
World or a Site.
• FROM pos2 TO pos2. For example
FROM N 50 WRT CE TO N 100
• Keyword AXES followed by a p-point or pline.
• The CLOSEST keyword, which will find the closest element in a particular direction.
The syntax is:
9.6.7 Orientations
The basic ways of defining an orientation are:
• Orientation attribute plus optional WRT. For example:
ORI OF /BOX1 WRT /*
• Cartesian orientation. For example:
dir IS dir AND dir IS dir
• For example to set an orientation of an element to that of a section, rotated by 90
degrees use:
(E IS U WRT /SCTN1 AND N IS E WRT /SCTN1)
• The AXES keyword, which will allow you to use P-points to specify orientations.
----<---------.
/ |
>-- AXES --*--- PArrive ---|
| |
|--- PLeave ----|
| |
|--- PTail -----|
| |
|--- HHead -----|
| |
|--- HTail -----|
| |
‘--- PPOINT n --+-- OF - <gid> ---->
• An example is:
( AXES PLEAVE IS AXES PLEAVE OF PREV AND AXES P3 IS UP )
• This will orient a branch component, such as a valve, so that it is aligned with the
previous component and its P3 is up.
See also Compare Positions.
AFTER
BEFORE
DIMENSIONOF, DIMOF
DIMWOOD
DISTANCE
LOWCASE, UPCASE
PART
REPLACE
STRING
SUBS, DSUBS
TRIM
UNITSOF
VTEXT
AFTER
BEFORE
DIMENSIONOF, DIMOF
Errors
DIMWOOD
Errors
DISTANCE
Outfitting
For both US and Outfitting formats the following rules are
observed:
• If distance is negative, the first symbol is a minus sign.
• If feet is true and the distance is at least a foot, then
the number of feet is output next, followed by a single
quote (’). Only if zeros is true will the number of feet be
output as 0 for distances less than a foot. Otherwise
the feet will be omitted.
Distance Feet & Inch Feet & Inch Inches Inches Feet & Inch
US US US US Outfitting
Fraction Fraction Decimal Fraction Fraction
Denom 100 Denom 32 DP 1 Denom 2
Zeros No Zeros Zeros Denom 4 Zeros
No Zeros
PART
REPLACE
Errors If the input string text1 is a null string or an unset text attribute,
the input string text1 is returned unchanged. For example:
REPLACE (’’, ’A’,’B’) -> ’’
If the search string text2 is longer than the input string text1,
the input string text1 is returned unchanged. For example:
REPLACE(’AA’, ’AAAAA’ , ’B’) -> ’AA’
STRING
Errors
SUBSTRING
TRIM
UNITSOF
Errors None.
VTEXT
VTEXT is used for the late evaluation of variables.
Side Effects If the scalar variable, the array variable or the array variable
element does not exist, the result is undefined.
Object Tolerance
Unset values are propagated as for undefined values (except for Boolean operations- see
below). Undefined values take precedence over unset. There is a specific logical function
UNSET to test if a values is unset.
Across comparisons, unset values are not propagated, but are treated as follows:
NE Results in TRUE.
Rather than being set explicitly, the values of some types of attribute can be specified in
terms of rules; that is, expressions from which the attribute values can be evaluated. Rules
can be set only for attributes of the following types (including user-defined attributes): text,
scalar (integer, real or logical), position, orientation, direction; they cannot be set for
reference attributes. A static rule will change the attribute setting only when verified or
executed explicitly, whereas a dynamic rule will update the attribute setting whenever any
part of the expression changes (the default type is static).
Examples:
Sets rule that ZLEN of the current element is the sum of its XLEN and
YLEN values. The ZLEN will be updated to reflect changes to XLEN or
YLEN only when the rule is verified or executed (i.e. it is a static rule).
RULE SET POS (N300 E400 U500) ON ALL BOX FOR /PUMP1
If BOX2 moves, the element with this attribute rule will move with it
automatically. (Note space between last character of element name
and closing parenthesis.)
Command Syntax:
>- RULE SET - attribute_name -+- STAtic --.
| |
|- DYNamic -|
| |
‘-----------+- <expre> -+- ON -.
| |
‘------+-.
|
.------’
|
‘-+- <selatt> -.
| |
‘------------+->
Querying:
Q ATT Displays all attribute values and all rules for the current
element.
Examples:
Command Syntax:
>-- RULE VERify --+-- attribute_name --.
| |
‘-- ALL -------------+-- ON --.
| |
‘--------+-- <selatt> --.
| |
‘--------------+-->
Examples:
Command Syntax:
>-- RULE EXEcute --+-- attribute_name --.
| |
‘-- ALL -------------+-- ON --.
| |
‘--------+-- <selatt> --.
| |
‘--------------+->
Examples:
Command Syntax:
>-- RULE DELete --+-- attribute_name --.
| |
‘-- ALL -------------+-- ON --.
| |
‘--------+-- <selatt> --.
| |
‘--------------+-->
11 Collections
You can create an array which includes a number of elements which all satisfy specific
selection criteria, as defined by yourself. This is a useful way of collecting information on
particular elements. You use the syntax:
Command Effect
The command:
VAR !PIPECOMPS COLLECT ALL BRANCH MEMBERS
Would create the array !PIPECOMPS and set it to contain the reference numbers of every
piping component in the MDB.
Logical expressions, which return TRUE or FALSE, can be used. They are most likely to be
used to check the value of an attribute for collection. The WITH or WHERE options introduce
the expression. For example:
VAR !LENGTHS COLLECT ALL WITH ( XLEN * YLEN 8 ZLEN GT 1000 )
would collect all elements for which the attributes XLEN, YLEN and ZLEN match the criteria
in the array !LENGTHS.
A volume is defined by the WITHIN keyword. You can define the volume either in terms of
two diagonally opposite points of an enclosing box, or as a volume around an element (with
an optional clearance around the box which contains the element). For example:
VAR !VOLUME COLLECT ALL WITHIN W800N17000U0 TO W1400N13500U1200
collects all elements in the defined volume into the array !VOLUME.
VAR !P COLLECT ALL PIPE EXCLUSIVE WITHIN VOLUME /PUMP1 1500
collects all piping components within the volume defined by a box ‘drawn’ 1500 mm around
/PUMP1 and puts them into the array !P. The EXCLUSIVE keyword indicates that only the
chosen elements exclusively within the given volume are to be selected.
In Marine there are structural design data, termed DESIGN, and detailed design data,
termed PRODUCTION. These two sets of data represent the same model and occupy the
same 3D space. For a volumetric query you only want one of the sets of data returned.
These two options allow you to choose which set of data will be returned by the volumetric
query.
Example:
Command Syntax
>--- VOLUMEOPTION ---+--- HULL DESIGN ---.
| |
| |
‘- HULL PRODUCTION -+--- ON ---.
| |
| |
‘--- OFF ---+--->
Hierarchy criteria can be defined by the FOR keyword. It identifies a list of elements below
which all selected elements must occur. You can also include an exclusion list. For example:
VAR !BRANCH COLLECT ALL BRANCH MEMBERS FOR /PIPE1 /PIPE2
EXCLUDE BRAN 1 OF /PIPE2
You can append the results of such a collection to an existing array using the APPEND
keyword. For example:
VAR !BENDS APPEND COLLECT ALL ELBOWS
Would add the references for all elbows to the array !BENDS.
You can also overwrite elements in the array by specifying the first index in the array which
you want to be overwritten. The specified index, and the indexes following it, will be
overwritten by the results. For example:
VAR !BENDS[99] COLLECT ALL ELBOWS
Would place the reference for the first ELBOW selected at position 99 in the array !BENDS,
overwriting any existing data, and subsequent selections in the array elements that follow.
If you specify more than one criteria, the specifications must be in the above order Some
more examples:
Note: This selection mechanism is a very powerful tool for searching whole databases and
MDBs. However, if you're not careful the selection process could be very time
consuming and tie up a lot of computer resource. Therefore, it is important that
selection is performed as efficiently as possible. Marine tries to apply the above
criteria so that the fastest condition is applied first and the most expensive is left to
last.
Typically, the expression is the slowest condition to evaluate, so it is important to limit the
selection as much as possible. For instance, take the example which appeared above:
ENHANCE ALL WITH ( XLEN * YLEN * ZLEN GT 100 0 )
Since only BOXes (and NBOXes) meet this criterion it would be sensible to limit the search
by specifying an appropriate class:
ENHANCE ALL BOX WITH ( XLEN * YLEN * ZLEN GT 100 0 )
This cuts the time to execute the selection. This is because the selection system knows that
BOXes only occur in DESI databases. Therefore it does not search other types of database.
It also knows where boxes are in the hierarchy, and so does not search unnecessary
elements.
Even greater performance savings can be gained by explicitly limiting the elements which
have to be visited by the search:
ENHANCE ALL BOX WITH ( XLEN * YLEN * ZLEN GT 1000 ) FOR /*
By default, the entire MDB is searched. But by specifying a hierarchy criterion, the selection
time can be cut considerably.
Limiting the volume of the search also cuts the number of elements which have to be
checked. However, it should be noted that this criterion is applied by determining whether
element limit boxes fall within the specified volume, using the spatial map. This is a fast
approach, but is not meant to provide the same accuracy as is used in on line clashing.
VAR IPIPECOMPS COLLECT ALL BRANCH MEMBERS
will set up the array IPIPECOMPS to contain the reference numbers of every piping
component in the MDB, e.g.
IPIPECOMPS [1] = '=20/302'
IPIPECOMPS [2] = '=20/303'
IPIPECOMPS [3] = '=20/304'
.
.
.
IPIPECOMPS [354] = '=25/510'
Every flange could then be extracted as follows:
VAR !FLANGES COLLECT (ALL FLANGES) FROM IPIPECOMPS
and then enhanced (highlighted):
ENHANCE ALL FROM !FLANGES
This could alternatively be performed in one step:
ENHANCE ALL FLANGES FROM IPIPECOMPS
Collections may be joined or concatenated by preceding the COLLECT keyword by
APPEND:
VAR !BENDS APPEND COLLECT ALL ELBOWS
Alternatively, the following:
VAR !LIST[99] COLLECT ALL SLCY
would place the reference of the first SLCY at position 99 in !LIST overwriting any data that
already exists at that and subsequent elements of the array.
If a selection contains elements of type TUBIng, then the collection describes it as the Leave
Tube of an existing database element:
VAR !TUBING COLLECT (ALL TUBI) FOR /*
Then !TUBING would contain something like the following:
The name of a given prefix may be collected using the 'FROM TABLE NAME PREFIX'
option.
e.g.
COLLECT ALL FROM TABLE NAME PREFIX '/B'
This will find all names starting with 'B'.
The syntax may be used in conjunction with the standard options. E.g.
COLLECT ALL NOZZ WHERE (HEIGHT GT 100) FROM TABLE NAME
PREFIX '/B'
Some reference attributes index the attribute values. For these the indexed values can be
accessed directly using FROM TABLE XXXX VALUE YYYY, where XXX is the attribute
name and YYYY is the attribute match.
e.g.
VAR !COLL COLLECT ALL FROM TABLE SPRE VALUE /RF300/100G
This will return all elements with SPRE set to /RF300/100G.
The syntax may be used in conjunction with the standard options. E.g.
VAR !COLL COLLECT ALL FLAN FROM TABLE SPRE VALUE /RF300/
100G
Searching using indexes directly will be considerably faster than the standard searches. i.e.
VAR !COLL COLLECT ALL WHERE (SPRE EQ /RF300/100G)
The referenced attributes that are indexed are:
Catalogue DB
To benefit from indexing the user must use the 'FROM TABLE' syntax in collections. This
syntax is similar the same as for system attributes.
Examples:
Q LASTMOD HIER Gives dates for last modifications to current element and its
members.
Q LASTMOD XLEN Gives date for last modification to XLEN attribute of current
element.
Command Syntax:
Q --+-- LASTMod --.
| |
|-- SESSMod --|
| |
‘-- USERMod --+--+-- <selatt> --.
| | |
| ‘--------------+-- HIERarchy --.
| | |
| ‘---------------+-->
|
‘-- attribute_name -->
Examples:
Q HISTORY DIAM Gives all sessions in which DIAM attribute was modified.
Q HISTORY[2] DIAM
gives second most recent session in which DIAM attribute was modified.
Command Syntax:
Q HISTORY attribute_name
Examples:
Command Syntax:
Q --+-- SESSComment --.
| |
|-- SESSUser -----|
| |
‘-- SESSDate -----+-- integer -->
Examples:
Command Syntax:
Q SESSION ON <date>
where <date> is a standard syntax graph. Remember that <date> actually specifies a time
(to the nearest minute), so take care if you use any defaults here.
Examples:
Command Syntax:
-SETCOMPDATE--|---date->
| --STAMP------name->
‘-FOR--DB--dbname--TO--|--date-->
|--Session -int-|--|-EXTRACT--|—- int---->
‘---------------‘ ‘--> |-- Dbname->
‘---------->
The ‘date’ subgraph takes the keyword NOW This in effect sets the comparison date to the
start of the session. This can be useful for querying the original value of an attribute.
The EXTRACT keyword sets the comparison to an extract DB. This extract DB must be one
further up the extract hierarchy. If the EXTRACT keyword is used by itself, the comparison is
set to the parent extract. Thus this enables you to find out what has been changed in this
extract.
Examples:
Note: Note that if a stamp is used to set the comparison date, this will set the comparison
session for each database within the stamp. It will also reset any comparison dates
set previously.
The query for the comparison date will only return a value if the COMPDATE was set using
a single date. Otherwise it will return ‘unset’. Similarly querying a stamp is only valid if the
COMPDATE was set using a stamp.
Command Syntax:
Q ----------|-COMPDATE-|--SESSION--|--FOR---dbname--->
VAR -vname--‘ |—EXTRACT---´
|----DATE--------->
‘----STAMP-------->
Examples:
To return true if element has changed at all since the comparison date use:
Q MODIFIED()
It will also return true if the element has been created since the
comparison date.
To return true if POS or ORI have been modified since the comparison date use:
Q MODIFIED(POS,ORI)
To return true if the position of P1 has changed use.
Q MODIFIED(P1 POS)
Examples:
You may follow each attribute name with the qualifying keywords below.
To check this element and members use:
OFFSPRING
To check all elements for which this element represents the significant one use:
SIGNIF
To check all elements for which this element represents the primary one use:
PRIMARY
To check this element and everything below (descendants):
DESCENDANTS
You can use the keywords below on their own to test for any attribute change. e.g. to
return true if any geometry for item or any descendants have changed use:
Q MODIFIED(GEOM DESCENDANTS)
To return true if any element for which this element is primary, has changed use:
Q MODIFIED(PRIMARY)
You may use the ‘OF’ syntax as for attributes. e.g. to return true if /PIPE1 has been
modified since the comparison date use:
Q MODIFIED() OF /PIPE1
You may put the new functions anywhere within an Outfitting PML1 expression. i.e. after
Q/Var and within collections. e.g.
Q (BUIL OR MODIFIED() OR ELECREC OF NEXT )
Command Syntax:
.------------------------------------.
/ |
>-MODIFIED-(-+--attname-------|--*--DESCENDANTS--+--+-comma--+--attname--´
| | | |
|--DESCENDANTS--. |-- SIGNIFICANT-| |
| | | | |
|--SIGNIFICANT--| |--PRIMARY----- | |
| | | | |
|--PRIMARY------| |--MEMBERS------| |
| | | | |
|--MEMBERS------| ‘---------------‘ |
| | |
| | |
| | |
‘---------------+----------------------+--+--) ---OF --id-->
|
‘-->
Examples:
Q ( CREATED() )
Examples:
However if the element has been deleted then you cannot have navigated to it in the first
place, hence DELETED() by itself will always be true. There are two ways around this.
Q (DELETED() of =15752/234 )
Keywords:
DIFFERENCE SINCE
Description:
Lets you report all changes to one or more specified database elements since an earlier
version of that database. The output is in the form of a report listing all elements and
attributes which have changed, with their old and new values. The report can be sent to a
file by using the ALPHA FILE or ALPHA LOG commands.
Note: The database states are compared between SAVEWORK operations. For example,
if you last saved your design changes at 9:30 and ask for a comparison since 10:00,
the current settings will be compared with those at 9:30.
Examples:
DIFF SITE SINCE SESSION 66 Compares current settings with those at the end
of session 66 of the current database.
Command Syntax:
>- DIFFerence <selele> SINCE -+- <date/time> -+-----------------------.
| | |
|- LATEST ------| |
| | |
|--SESSION nn --| |
| | |
‘---------------+- EXTRACT -+- extname -|
| |
‘- extno ---+->
Note: The previous DB Changes appware is now available by selecting Utilities > DB
Listing.
The Model Changes window has two vertically split panes. The top pane contains a Design
Explorer while the lower split contains the following tabs.
• Model Timeline
• Stamps
• Element History
• Key.
The Element History and Key panes are for information only while the Model Timeline
and Stamps panes allow the selection of a session or stamp upon which to base the display
of changes in the explorer pane, and optional highlighting of changed elements in the 3D
graphical view. Once a session or stamp is selected changes can be highlighted by
Refresh.
Model Timeline
Clicking Model Timeline displays every session for every Design database in the current
MDB, ordered chronologically.
Stamps
Clicking Stamps lists details of every stamp that records session numbers for all of the
Design databases in the MDB.
Element History
Clicking Element History lists the details of every database session in which the selected
Current Element has changed.
Key
Clicking Key displays a static tree control with images, colour and text explaining explorer
annotations used to display changes in the explorer control.
Either of two modes of change reporting can be selected from the drop-down menu
according to the current selection.
All Changes Since displays only changes that have been made in all databases in the
MDB between, but not including, the selected session or stamp, and the current state of the
model but does include any unsaved changes.
Note: For large models this change analysis can take some time.
Only Changes At displays only the changes that were made when the highlighted session
was created which, may have been a savework or as the result of an extract operation, such
as a flush or refresh, as indicated by the Reason column in the Model Timeline table.
Note Highlighting in the explorer pane and in the 3D graphical view is always with reference
to the current state of the model; it is possible that no changes from a previous session will
be visible, for example if all changes were made to elements that have since been deleted.
When Refresh is clicked and the change analysis operation is complete the explorer tree is
updated with annotations which highlight the changed elements in detail.
Clicking Highlight has an immediate effect on all 3D graphical views if changes are
currently displayed in the explorer tree. Any changed elements that have graphical
representation and are in the drawlist for any active view are highlighted in colour. This uses
the same customisable colour used by the Highlight element function available via right-
click menu in the standard Design Explorer. Unchecking Highlight returns the graphical
display to normal colouring.
All panes of the Model Changes are updated and explorer annotations and 3D graphical
highlighting are reset in the following circumstances:
• further element changes
• savework, getwork, and refresh
• user or MDB switch
Following any of these operations Refresh must be clicked again in order to update the
change highlighting.
Where the <comparison> syntax is similar to that following the SINCE keyword in both of
the existing DIFFERENCE and OUTPUT CHANGES commands.
-->-+- <date/time> -+-----------------------.
| | |
|- LATEST ------| |
| | |
|---------------+- EXTRACT -+-----------|
| | |
| |- extno ---+
| | |
| '- extname -+
| |
`- STAMP - <name> ---------------------+->
If the BEFORE clause is used the elements will be reverted to the state they had before the
session that is selected by the historical specification.
Reverts the hierarchy rooted at the current element to its state in the parent extract.
The revert command makes sure that every element creation, include, reorder and deletion,
and every attribute change is allowed before proceeding. If any of these tests fail, for
example due to legality checks, read-only databases or DACs, then the entire revert
operation is cancelled and the following error is generated.
(43,615) Cannot Revert elements. No changes have been made.
In this case a series of warning messages is written to the console indicating the causes of
the error, for example:
DAC prevents deletion of element /DELETE_UDET_B
DAC prevents creation of element =15752/1363
DAC prevents modification of attribute Built on element /
MODIFY_B_VESS1
Element locks do not prevent a revert operation if those elements were unlocked in the
previous state.
Note: this command is not directly related to the REVERT <database name> command
available in the Admin module. This command allows an entire database to be
reverted to the state it had at a previous session.
13 Output Syntax
The OUTPUT command is used to scan specified parts of the Project DBs and to output, in
the form of a structured list, the data held there. The output is presented in such a way that
it is both easy to interpret and suitable for reinput as design data to appropriate Outfitting
modules.
Output takes the form of macro files whose contents precisely recreate the hierarchical
structure of the elements currently listed in the selected DBs, including the settings of all of
their attributes. Facilities are provided for controlling the precise layout of the output files
and the amount of information presented. Element cross-referencing (indexing) is also
available, to assist in interpreting the data. The macro is sent to a file by using the standard
ALPHA FILE or ALPHA LOG commands.
You may view the output lists directly on your screen, or you may send them to text files for
subsequent inspection or printing. The latter files can be read back as input to say a
different constructor module form that from which the data was derived, either in the same
or in a different project. You can include only the elements which have been changed since
a specified time (i.e. those elements which would be listed by the DIFFERENCE command).
The macro files created can be used for the following purposes:
• To copy part of a design.
• To modify part of a design. The output macro file containing the relevant design data
can be edited using operating system facilities and can then be reinput to the
appropriate DB. You could use this method, for example, to change Nozzle Catalogue
References in a pipework subsection.
• To transfer part of a design from one DB to another or from one project to another.
• To archive all or part of the Project DB. Listings may be read in at any future revision of
Outfitting, making such as archive more secure in some respects than the Project DB
itself.
• To give you a quick-reference listing of the DB contents to provide a rapid answer to a
specific question (such as where a particular element is stored in the hierarchy).
The output is generated in three stages:
1. Any elements which were originally locked are unlocked. Element deletions, name
changes and type changes are output. Note that reordering or insertion of elements in
their owner’s members list is treated as deletion followed by creation, so that Refno
attribute settings may be changed.
2. Newly created elements and all standard attribute settings are output.
3. Reference attribute settings and rules are output. Elements which were originally
locked are relocked and GADD commands are included if any elements were included
in Groups.
• ORI and ANGLE attributes are listed to four decimal plates. Orientations are output as
angles using the ORIANGLE attribute to give more accurate output, and (as comment
text) in XYZENU axis form. For example
AT W17246.099 N12125.000 U4130.000 ORIA 180.000 -75.000
90.000 $ ( ORI Y IS E AND Z IS N 15.000 D $)
• Nozzles are treated somewhat differently to other elements in that their positions and
orientations are output twice; first in Owner coordinates (for normal reinput), and
secondly in Zone coordinates. The latter data enables them to be checked directly
against Branch head and Tail positions, which are always stored in Zone coordinates.
(Examples are given later in this section).
Note: The lengths of output lists are normally minimised by omitting all attributes which
have the Outfitting default values, since the use of such values in input data
generally has no effect. The omission of data in this way can, however, cause
problems under some circumstances, and so may be overridden if required.
The design to be transferred can include some of all of the following major categories of
data:
• The Project Configuration
• Catalogue items, including Bolt Tables, Connection Compatibility Tables, etc.
• Material Properties
• Component Specifications
• Three-dimensional Design layouts
• User-Defined Attributes (UDAs)
• Drawing Libraries and Drawings
To transfer a complete Project you would normally use the ADMIN Module. You would
usually use output lists only for transferring specific parts of the Catalogue, Design, Drawing
(PADD) or Dictionary (UDA) data.
Output cannot be used to transfer the Project Configuration; you must use ADMIN to output
the configuration in a suitable format for transfer. This operation is included in this chapter
simply to show where it fits into the overall operation.
Before any transfer takes place, you should consolidate the Project DB by removing all DB
copies, leaving only the Master versions. You should also ensure that individual DBs have
consistent and unique contents, thus avoiding, for example, an attempt to transfer two
similar (but not identical) copies of the Catalogue.
When an Outfit listing is to be input to a Project DB, it is essential that all elements which are
referred to in the list, but which are specified outside the list, have already been loaded into
that DB. After the transfer of data to a new Project, the element reference numbers will
almost certainly be different from the original and no reliance should be placed on their
meaning. As a general rule, therefore, all items which are reference (such as Catalogue
Components, Specification Components, etc.) should be named.
Note particularly that, if you use Outfit to transfer data from Design, Catalogue or Drawing
(PADD) DBs which include User-defined Attributes (UDAs), the reloading process will fail if
there are any UDSs for which definitions are not available in the target Project of if the
definition in the target project is inconsistent with the definition in the source project. For this
reason, UDA definitions held in the Dictionary DBs should be transferred first.
Note: Cross-references between Branches and attached Nozzles may be lost during the
transfer process. In this case, they must be reset in the newly created DB.
Note: Datal listings containing Hull elements should not be manually edited. Hull elements
contain binary data and manual editing may break the consistency of the hull data
model.
OUTPUT CHANGES
Incorporates INCLUDE command for named items. The item must be named in both the
current and referenced session. For unnamed items, a DELETE, CREATE sequence is
followed.
Examples:
OUTPUT /ZONE-A
Outputs all elements, whether or not they have ever been changed.
OUTPUT ALL PIPE FOR /ZONE CHANGES SINCE 21 JANUARY
Outputs all changes to named element and its members since the given date.
OUTPUT /PIPE-100 CHANGES
Outputs all changes to named element and its members since last SAVEWORK
command.
OUTPUT /PIPE-1 CHANGES SINCE EXTRACT
In an extract database, outputs all changes since the extract was created.
OUTPUT /PIPE-1 CHANGES SINCE LATEST EXTRACT
In an extract database, outputs all changes compared with the latest version of the
parent extract.
OUTPUT /PIPE-1 CHANGES SINCE EXTRACT 44
OUTPUT /PIPE-1 CHANGES SINCE EXTRACT PIPE/PIPE-X1
In an extract database, outputs all changes compared with the latest version of the
given extract, which must be higher in the extract hierarchy.
OUTPUT /PIPE-1 CHANGES SINCE SESSION 77 EXTRACT 44
OUTPUT /PIPE-1 CHANGES SINCE OCT 2000 EXTRACT PIPE/PIPE-X1
In an extract database, outputs all changes compared with the given extract, which
must be higher in the extract hierarchy, at the given session or date.
The macro is sent to a file by using the standard ALPHA FILE or ALPHA LOG commands.
You can also give an Outfitting session number. The database states are compared
between SAVEWORK operations. For example, if you last saved your design changes at
9:30 and ask for a macro containing changes since 10:00, the macro will contain all changes
since 9:30.
Command Syntax:
>- OUTPUT <selele> SINCE -+- <date/time> -+-----------------------.
| | |
|- LATEST ------| |
| | |
|--SESSION nn --| |
| | |
‘---------------+- EXTRACT -+- extname -|
| |
‘- extno ---+->
• The following options are not available with the OUTPUT CHANGES functionality.
Once one (or more) of these options have been specified then REVERSE, CHANGES,
etc. cannot be specified following the element to be output.
COMMENT
This specifies that certain comments will be added to the OUTPUT output. The reference
number of each element will be shown immediately after the NEW (or OLD) command, the
owner of each element will be given, and each reference valued attribute will be output as a
comment during the first pass (normally, reference valued attributes are ignored entirely
during the first pass). In addition, the position and orientation of Nozzles will be written in the
coordinate system of their ZONE. All these comments will be enclosed between the
standard comment delimiters, that is:
$(' comment_text '$)
TABULATE n
This specifies that the output will be tabbed by n*d spaces at the beginning of each line,
where d is the depth of the element. Note that where a logical line is split over more than
one physical line in the file (which can happen very easily when a short line length has been
specified on the 'ALPHA FILE' command) then subsequent physical lines are not tabbed.
n must be between 0 and 6.
TABULATE 0 is equivalent to no tabbing.
INDEX
This specifies that
• Each line of the output will be numbered and
• Indexes by reference number and name will be written at the end.
As with tabulate, only logical lines will be numbered; continuation lines will not be numbered.
BRIEF
This specifies that only the NEW or OLD command line will be written, that is, no attributes
will be written.
NOUDA
This specifies that user defined attributes will not be written.
ONLY NOUN or
ONLY (NOUN …. NOUN)
These options specify that only elements of the given types will be output. If more than one
type is to be specified, then the list must be enclosed in brackets. At most 10 types may be
specified.
PASS n
This specifies that only the first pass (element definitions; no reference valued attributes) or
the second pass (reference valued definitions, connections) will be written. n must be 1 or 2.
OLDFORMAT
This specifies that element definitions will be written using the OLD (rather than the NEW)
command, that is, elements are to be updated when the file is re-read.
Locate
If the LOCATE option is used and 'output /VESS1', then the output will contain the following:
NEW LOCATE SITE /ATEST
NEW LOCATE ZONE /ZONE.EQUIP
NEW EQUIP /VESS1
Etc.
REPLACE
If the replace option is used the output will contain the following:
NEW REPLACE EQUI /VESS1
Etc.
N.B. the REPLACE command will only be output for the top level element.
If both LOCATE and REPLACE options are used, the output would be:
NEW LOCATE SITE /ATEST
NEW LOCATE ZONE /ZONE.EQUIP
NEW REPLACE EQUIP /VESS1
SAMER/EF
May be specified after the element to be output, in conjunction with the various formatting
options and with 'CHANGES SINCE date' and 'REVERSE'. If specified, each 'NEW'
command to originally define each element will be output in the form:
1. NEW <eltype> <element> REF =rrrrr/rrrrr
Thus when the file is read back in, the element will be assigned the same reference
number as previously. Of course, this requires that the reference number is suitable in
the environment in which the file will be read.
Examples:
• OUTPUT CE SAMEREF
• OUTPUT INDEX /HTEST SAMEREF
• OUTPUT /STAN.CATA CHANGES SAMEREF
• OUTPUT CE REVERSE CHANGES SAMEREF
2. The NEW command has been extended to allow a new keyword 'REF' followed by a
reference number to be specified after the element name. If so specified, and the
reference number is valid, then the element will be created with the reference number
given.
If an invalid reference number is given, the command will be rejected. Two new error
messages may occur:
• 859: Invalid reference number: =rrrrr/rrrrr
• 860: Reference number =rrrrr/rrrrr already exists
Examples:
• NEW BOX /BOX1 REF =15772/17461
Note: The examples are independent; each starts with all formatting options in their default
states.
Command
OUTPUT /HTEST
Output
INPUT BEGIN
NEW SITE /HTEST
POS E 0 N 0 U 1000
NEW CYLINDER
POS E 0 N 3299 U 0
ORI Y is D and Z is N
LEVE 0 4
DIAM 960
HEIG 6598
END
NEW CYLINDER
POS E 0 N 6848 U 0
ORI Y is D and Z is N
LEVE 0 4
DIAM 1020
HEIG 500
Command
OUTPUT COMMENT/HTEST
Output
INPUT BEGIN
NEW SITE /HTEST $(=15772/17197$)
$( OWNE /* $)
POS E 0 N 0 U 1000
END
NEW CYLINDER $(=15772/17215$)
$( OWNE /E1301 $)
POS E 0 N 6848 U 0
ORI Y is D and Z is N
LEVE 0 4
DIAM 1020
HEIG 500
Command
OUTPUT TABULATE 2 /PIPES
Output
INPUT BEGIN
NEW ZONE /PIPES
FUNC 'Piping - above grade'
PURP PIPE
LTAI true
HBOR 50
TBOR 100
HCON FBD
TCON FBD
DETA true
LNTP unset
TEMP -100000
PRES 0
HSTU /A3B/PA50
CCEN 0
CCLA 0
PSPE /A3B
DUTY unset
DSCO unset
PTSP unset
INSC unset
PTNB 0
DELDSG unset
Output Syntax
OUTPUT INDEX /EQUIP
Output
$( 1. $) INPUT BEGIN
$( 2. $) NEW ZONE /EQUIP
$( 3. $) FUNC 'Equipment - above grade'
$( 4. $) PURP EQUI
$( 15. $) LEVE 0 4
$( 16. $) DIAM 960
$( 17. $) HEIG 6598
$( 18. $) END
$( 19. $) NEW CYLINDER
$( 20. $) POS E 0 N 6848 U 0
$( 21. $) ORI Y is D and Z is N
$( 22. $) LEVE 0 4
$( 23. $) DIAM 1020
$( 24. $) HEIG 500
INPUT FINISH
$(
--- REF INDEX ---
=15772/17198 ... 2
=15772/17213 ... 5
=15772/17214 ... 12
=15772/17215 ... 19
=15772/17216 ... 26
=15772/17217 ... 33
=15772/17218 ... 40
=15772/17219 ... 48
=15772/17220 ... 56
=15772/17221 ... 64
=15772/17222 ... 72
=15772/17223 ... 80
=15772/17224 ... 88
=15772/17225 ... 96
=15772/17226 ... 104
=15772/17227 ... 114
=15772/17228 ... 124
=15772/17229 ... 134
Output syntax
OUTPUT BRIEF /STEEL
Output
INPUT BEGIN
NEW ZONE /STEEL
NEW STRUCTURE /EQUIPRACK
Output syntax
OUTPUT NOUDA /HEATING-VENTS
See full output for formatting.
Output syntax
OUTPUT OLDFORMAT /CIVIL
Output
INPUT BEGIN
OLD ZONE /CIVIL
FUNC 'Civils'
PURP CIV
END
Output
INPUT BEGIN
NEW SITE /HTEST
POS E 0 N 0 U 1000
END
INPUT END /HTEST
INPUT FINISH
Output
INPUT BEGIN
NEW BRANCH /100-B-1-B1
BUIL false
SHOP false
HPOS E 12490 N 12280 U 1150
TPOS E 4979 N 9887 U 13655
HDIR U
TDIR N
UCOFG E 0 N 0 U 0
LHEA true
LTAI true
HBOR 50
TBOR 100
HCON FBD
TCON FBD
DETA true
LNTP unset
TEMP -100000
PRES 0
HSTU /A3B/PA50
CCEN 0
CCLA 0
PSPE /A3B
DUTY unset
DSCO unset
PTSP unset
INSC unset
PTNB 0
DELDSG unset
END
Output
NEW NOZZLE /VENT_OUT
UCOFG E 0 N 0 U 0
END
NEW BRANCH /100-B-1-B1
BUIL false
SHOP false
HPOS E 12490 N 12280 U 1150
TPOS E 4979 N 9887 U 13655
HDIR U
TDIR N
UCOFG E 0 N 0 U 0
LHEA true
LTAI true
HBOR 50
TBOR 100
HCON FBD
TCON FBD
DETA true
LNTP unset
TEMP -100000
PRES 0
HSTU /A3B/PA50
CCEN 0
CCLA 0
PSPE /A3B
DUTY unset
DSCO unset
PTSP unset
INSC unset
PTNB 0
DELDSG unset
END
Output
INPUT BEGIN
NEW ZONE /EQUIP
FUNC 'Equipment - above grade'
PURP EQUI
NEW CYLINDER
POS E 0 N 3299 U 0
ORI Y is D and Z is N
LEVE 0 4
DIAM 960
HEIG 6598
Output
INPUT BEGIN
OLD /E1301-S1
CREF /200-B-4-B1 TAIL
CATR /AAZFBD0TT
OLD /E1301-S2
CREF /250-B-5-B1 HEAD
CATR /AAZFBD0TT
OLD /E1301-S3
CREF /250-B-5-B2 HEAD
CATR /AAZFBD0TT
OLD /E1301-T1
CREF /100-C-12-B2 TAIL
CATR /AAZFBB0NN
OLD /E1301-T2
CREF /100-C-13-B1 HEAD
CATR /AAZFBB0NN
Output
INPUT BEGIN
NEW LOCATE SITE /HTEST
NEW LOCATE ZONE /EQUIP
NEW REPLACE EQUIPMENT /E1301
POS E 2850 N 5660 U 1470
UCOFG E 0 N 0 U 0
BUIL true
DSCO unset
PTSP unset
INSC unset
NEW CYLINDER
POS E 0 N 3299 U 0
ORI Y is D and Z is N
LEVE 0 4
DIAM 960
HEIG 6598
END
NEW CYLINDER
POS E 0 N 6848 U 0
ORI Y is D and Z is N
LEVE 0 4
DIAM 1020
HEIG 500
END
Output
INPUT BEGIN
NEW REPLACE EQUIPMENT /E1301
POS E 2850 N 5660 U 1470
UCOFG E 0 N 0 U 0
BUIL true
DSCO unset
PTSP unset
INSC unset
NEW CYLINDER
POS E 0 N 3299 U 0
ORI Y is D and Z is N
LEVE 0 4
DIAM 960
HEIG 6598
END
NEW CYLINDER
POS E 0 N 6848 U 0
ORI Y is D and Z is N
LEVE 0 4
DIAM 1020
HEIG 500
END
NEW BOX
POS E 0 N 1710 D 315
LEVE 0 8
XLEN 460
YLEN 300
ZLEN 630
END
Output
INPUT BEGIN
NEW LOCATE SITE /HTEST
NEW LOCATE ZONE /EQUIP
NEW EQUIPMENT /E1301
POS E 2850 N 5660 U 1470
UCOFG E 0 N 0 U 0
BUIL true
DSCO unset
PTSP unset
INSC unset
NEW CYLINDER
POS E 0 N 3299 U 0
ORI Y is D and Z is N
LEVE 0 4
DIAM 960
HEIG 6598
END
NEW CYLINDER
POS E 0 N 6848 U 0
ORI Y is D and Z is N
LEVE 0 4
DIAM 1020
HEIG 500
END
NEW BOX
POS E 0 N 1710 D 315
LEVE 0 8
XLEN 460
YLEN 300
ZLEN 630
END
This will display the Datal Listing Options form, where different options can be set. If the
file name is left empty, the Datal will be written to the Command Window.
14 Project Queries
Examples:
EXCHANGE Alter the databases in the current list of the current MDB
DEFER
CURRENT
Command Syntax:
>-- MDB --+-- UPdate ----.
| |
‘-- NOUPdate --+-->
Example:
Project: XYZ
User: CSI (758)
Teams: B
MDB: /DESIGN
Current DBS:
1 PIPING/SITE RW
2 MASTER/CATLOG R
Deferred DBS:
3 STRUCT/STEEL
This indicates that the designer has identified himself as being Outfitting user CSI, that he is
logged in to the computer as user 758, that he is a member of team B, that he is accessing
Project XYZ, and that he has selected an MDB called /DESIGN.
Command Syntax:
>-- STATus -->
Example:
PROJECT XYZ
==============
DB MODE
MASTER/AREA-A R
MASTER/AREA-B R
STRUC/AREA-C RW
This shows that two users are currently logged in and are using Outfitting for work on
Project XYZ. The Project Coordinator is using ADMIN but is not accessing any databases.
User 752 is using DESIGN. He is accessing the MDB named /STEEL, whose constituent
DBs are as listed. He has Read-only status for the DBs owned by the MASTER (System)
team and Read/Write access to the DB STRUC/AREA-C.
Command Syntax:
>-- SYStat -->
Examples:
Examples:
Deferred DBS:
4 PIPING/AREA-B DESI Exclusive
5 MASTER/AREA-E DESI Update
MDB:/STEEL
Current DBS:
1 MASTER/AREA-A DESI Exclusive
2 MASTER/AREA-B DESI Exclusive
3 STRUCT/AREA-C DESI Exclusive
Deferred DBS:
**NONE**
MDB: /ANSI
Current DBS:
1 CATAL/AREA-E CATA Update
Deferred DBS:
**NONE**
Z (FREE)
TEAMS :***NONE**
GEN (GENERAL)
TEAMS :TEST
The information generated by the LIST command can either be displayed on screen or sent
to a file.
Command Syntax:
.----<----.
/ |
>-- LIst --*-- USers --|
| |
|-- MDBs ---|
| |
|-- DBs ----|
| |
|-- TEams --’
|
‘-------------->
Command Syntax:
>-- Query --+-- USer ---.
| |
|-- USer word ---|
| |
|-- TEam word ---|
| |
|-- DB dbname ---|
| |
‘-- MDB name ----+-->
Examples:
Command Syntax:
>-- Query --+-- DBNAme -----.
| |
|-- DBTYpe -----|
| |
|-- DBFNumber --|
| |
‘-- DBFIle -----+-->
15 Link Documents
The link documents mechanisms provide the ability to link external and internal documents
to database objects. Every element in the database can be associated with a resource that
is either another database element for example a drawing, or an external document such as
a file, or a web page. External documents are not stored in the Dabacon database.
15.1 Overview
Each document or other resource, either external or internal, that can be linked to a
database element is represented in the database as Link Descriptor. The Link Descriptor's
main role is to carry information about the document it describes and a Uniform Resource
Locator (URL).
It is possible for any other elements in the database to reference these Link Descriptors
through a two-way mechanism enabling users to find all elements that reference a particular
Link Descriptor and the opposite, find all documents referenced by an element.
It is also possible to assign classification information to each Link Descriptor. The
classification information provides the facility of assigning multiple class information to a
Link Descriptor so that a search for all elements that have references to documents with
specific classification assigned can be made. For example, a search can be made for all
Link Descriptors classified as "Installation"-class document or all pumps that do not
reference any "Certificate" and "Security"-class documents.
The following figure shows a schematic overview of the possible linkage to external
documents and internal drawings.
• LNKURL - a string storing raw Uniform Resource Locator of the linked document.
It can be for example a file ("file:///Docsys/ProjectX/MyDocument.doc"), a web page
("http://www.aveva.com"), an e-mail address ("mailto:[email protected]") or any
other external resource. If it is an internal database reference (e.g. to a drawing) it is
stored in a form "dabref://=12345/6789".
The following pseudo attributes may be queried:
• LNKREF - if the Link Descriptor holds a reference to an internal database element, i.e.
the LNKURL stores a "dabref://…" link, this attribute returns a reference to a database
element linked through this descriptor. Otherwise, LNKREF returns a null reference. It
is also possible to store an internal reference through this attribute.
• URL - this attribute returns merely the value of LNKURL but its main purpose is that
you can assign either an external URL or a string with reference number of a Dabacon
element, which is automatically recognised and stored as an internal link.
• LNKCLS - list of Link Class elements that classify this Link Descriptor.
• LNKELE - list of elements that have this Link Descriptor assigned.
You can use the LNKREF to set link to an internal database reference e.g. a drawing:
> LNKREF /DRAWING1
> QUERY LNKREF
Url DBRef / DRAWING1
The Links Addin uses the notion of link categories to treat different types of links differently.
By default the Links Addin comes with predefined link categories for: E-mail address, Web
page, Existing file and Drawing. However, it gives the possibility to extend this set of link
types and to create additional categories. For example, one could add a category that would
accumulate links to documents or links to FTP resources if needed.
When creating a link the Links Addin gives the possibility to choose a link category and set
options for the new link. An example link creation dialog is shown below.
Each link category has a name and an icon. The dialog provides the possibility to input the
Name and Description for the link, depending on the type of link being created the form will
prompt for an appropriate resource to link to. For example when created a link to a web
page the user is prompted to enter a valid Address such as http://www.aveva.com.
Clicking OK will open a new window prompting for a container for the new link.
On its first use, the ‘Select destination container’ window will appear empty. This is because
a Link World and Link Folder hierarchy has not been created.
As discussed in the section ‘Configuring Link Hierarchy’ at least one Link World should be
created.
In the ‘Select destination container’ window right click to create a ‘New world’. A ‘New folder’
must also be created below a world.
The Link Addin can be customised through a set of API’s, refer to the Software
Customisation Reference Manual for more information.
Access to a DB is usually controlled in such a way that only one user can modify the content
of that DB at any one time; that is, only one user can have Write access to the DB. Other
users may have simultaneous Read access, depending how access rights have been set up
in the ADMIN module.
In a multi-disciplinary project, in which different teams of users work on different aspects of
the design, an individual user will usually have Read/Write access to the DBs controlled by
their own team and Read-only access to DBs controlled by other teams. This works well
until a user needs to connect an item in their team’s DB to an item in another team’s DB; for
example, a member of the Piping team may wish to connect a Branch in a Piping DB to a
Nozzle in an Equipment DB (to which they have Read-only access). In such a case, the
design changes needed in the Equipment DB are stored in a ‘buffer’ file known as an inter-
DB connection macro. Only when this macro is run by a member of the Equipment team,
with Write access to the Equipment DB, are the changes implemented.
The sequence of events which would occur is illustrated in the following example.
Assume that Project ABC has separate Piping and Equipment design teams. Assume that
User P has Read/Write access to a Piping DB and Read-only access to an Equipment DB,
while User E has Read/Write access to the Equipment DB and Read-only access to the
Piping DB.
User P wishes to connect a Branch Tail in their Piping DB to a Nozzle in User E’s Equipment
DB; that is, they wish to set the Branch’s TREF in their Piping DB to point to the CREF of the
Nozzle (which they can do) and to set the CREF of the Nozzle to point to the TREF of their
Branch (which they can not do), thus:
Only User E
can set this
Nozzle in
Branch in Piping DB Equipment DB
owned by User P's TREF CREF
owned by User
team E's team
Only User P
can set this
• User P sets the TREF of their Branch to point to the CREF of the Nozzle in the
Equipment DB.
• When User P tries to set the Nozzle’s CREF, they receive a message telling them that
they are trying to connect to a read-only DB and that an inter-DB connection macro is
being created automatically. This macro, which stores the commands needed to set the
CREF, is given a name with the format abc001.mac (where the macro number, 001
here, is allocated sequentially), and is held in the directory ABCMAC (or as defined by
the project’s environmental variables).
• When User E next enters MONITOR, they receive a message asking them to run the
inter-DB connection macro abc001.mac and to delete it when they have done so.
• User E enters DESIGN and runs the inter-DB connection macro by giving the
command
$M /%ABCMAC%/abc001.mac
This sets the CREF for the Nozzle to point to the TREF of the Branch and completes
the link between the two DBs.
• User E enters MONITOR (or ADMIN if they have sufficient access rights) and deletes
the redundant macro by giving the command
DELETE MACRO 1
where 1 is the macro number. This command is valid in DESIGN, MONITOR and
ADMIN.
Note: If User P checks their DB for data consistency errors between Stages 2 and 4, when
the macro has been created but not yet run, they will get an ‘incompatible connection
reference’ message. They cannot finalise their design until User E has run the
macro. Thus, the successful use of inter-DB connection macros relies on good co-
operation between the teams involved.
Note: Inter-DB connection macros are also created in multiwrite DBs if an attachment is
claimed by another user.
The Autosave utility in the DESIGN module prompts the user to save their work at regular
intervals, which can be determined by the user. The utility will prompt the user to confirm a
Save operation so that its effect on the current session can be managed.
In the DESIGN - General Application, the Autosave function is configured by selecting:
Settings > Save Work Options
Note: This does not effect the Save Work command itself accessed by selecting
DESIGN > Save Work.
If the Save Work Options... command does not appear in the Settings menu, then this
utility has not been installed, and the system will not prompt the user to save work at regular
intervals. Otherwise the AutoSave form displays:
Interval Sets the interval between reminders to save work to 15, 30, 45
or 60 minutes
Active Shows the start time and date of the current interval.
An interval starts when the user performs a Save Work using a the GUI, or when the service
was last started.
In normal operation, users will be prompted by a Confirm form, if they do not save work
within the time interval specified on the AutoSave form. Note that answering No to this
forms starts a new time interval even though work has not been saved.
Notes:
1. Each Save Work creates a new session on the database, which increases the size of
the database.
2. The "undo" command only operates between Save Work commands. Once a Save
Work command is performed, it is not possible to undo operations performed prior to
the last Save Work.
3. Data is permanently saved to the database when a Save Work command has been
performed. The user cannot remove changes saved to the database. A Project
Administrator can remove changes by rolling back sessions in the Administrator
module.
4. The user may experience a brief delay while the Save Work command performs its
task.
Installation
This utility is installed using the PML Add-ins mechanism described in the Software
Customisation Guide.
This add-in is specified by add-in definition file with pathname
%PDMSUI%\DES\ADDINS\asave. This add-in file is delivered with the product, but it must
be edited to enable the utility.
In order to do this, open the asave file with a text editor. It should contain the following
commented add-in instructions.
# ----------------------------------------------------------------------
#
# (c) Copyright 2007 to Current Year AVEVA Solutions Limited
#
# File: ASAVE
# Type: Add-in Definition
# Module: design
#
# Author: Malcolm Barlow
# Created: Wed Mar 28 2007
#
# Description: Add-in definition for autosave application
#
# ----------------------------------------------------------------------
#
# Name: ASAV
# Directory: GEN
# Title: Autosave
# Object: apphsave
# ShowOnMenu: FALSE
# ModuleStartup:!!appHsave.initialise(true)
# StartupModify: GEN :!!appHsave.modifyMenus()
Remove the # character from the lines containing add-in instructions. Leave the # character
at the beginning of comment lines. The resulting file should appear as follows:
# ----------------------------------------------------------------------
#
# (c) Copyright 2007 to Current Year AVEVA Solutions Limited
#
# File: ASAVE
# Type: Add-in Definition
# Module: design
#
# Author: Malcolm Barlow
# Created: Wed Mar 28 2007
#
# Description: Add-in definition for autosave application
#
# ----------------------------------------------------------------------
#
Name: ASAV
Directory: GEN
Title: Autosave
Object: apphsave
ShowOnMenu: FALSE
ModuleStartup:!!appHsave.initialise(true)
StartupModify: GEN :!!appHsave.modifyMenus()
Save the changes to the asave file. Restart for these changes to take effect.
By changing the asave file it is possible to configure the system to start with autosave
enabled or disabled. The file as shown above starts DESIGN with autosave enabled. In
order to start the system with autosave installed and disabled, change the following line:
ModuleStartup:!!appHsave.initialise(true)
to
ModuleStartup:!!appHsave.initialise(false)
• Curved Hull uses name sequences for seams and shell profiles. See Hull Model
Concept > About naming > Specific Name Rules for details.
19 Distributed Attributes
New functionality feature called Distributed attributes has been introduced to the database
system. The fundamental concept of distributed attributes is about enabling objects to have
groups of attributes distributed across hierarchies and potentially databases. As a result, a
number of improvements can be used in the database system.
Improved Concurrency
• Users may work on different sets of data of an object in parallel.
• Support simultaneous multi-discipline update on same object.
• Claim granularity, only claim relevant portions of an object.
Possibility to Distribute an Objects Attributes across Hierarchies and Databases
• Easy distribution over Global dividing distributed attribute over different primary
locations.
Simplified Access Control
• Team owning databases provides both read/write and read-only levels of access within
the same object.
Data Inclusion/Exclusion
• Possible to hide select portions of an object.
User Extendibility on New and Existing Data
• In cases where it is hard to define UDETs this is an alternative way to extend existing
objects with distributed attribute data.
Automatic Attribute Management
• The management (create/delete/referencing) of the distributed attributes.
• While the concept itself is rather straightforward, it introduces new possibilities to
applications.
• An pictoral representation of how the concept might be used in an application, follows:
Term Description
Binding element The owner of distributed attributes groups.
Distributed element / The container for distributed attributes these can be thought
attribute group of as attribute groups. The distributed element is always a
UDET based on the XPITEM element type.
Distributed attribute The attributes, UDAs that a defined for an attribute group.
Default home The location where the distributed elements are stored and
managed.
All definitions of Distributed Attributes are stored in dictionary databases and maintained by
the LEXICON module.
19.2 Configuration
Distributed attributes are made up of UDETs which are associated with the binding element
that they add attributes to. To configure distributed attributes:
• Create UDETs to be used as distributed attribute groups.
• Create the attributes to be included in the attribute groups.
• Create distributed attribute schema associating elements with the distributed attribute
group.
• Create the default home definition the location where distributed attributes are to be
created and managed.
• Create actual default home top level elements where distributed attribute groups are
created.
together. Distributed attributes schemas are configured using the DSXSCH, DSXOWN and
DSXMBR objects in the lexicon application.
Schema, DSXSCH
A distributed attribute schema is represented by the DSXSCH element, and consists of a
name and an optional default home reference. The default home reference may be
overridden at lower levels in the schema. At present, all schemas are treated as one unified
schema; this functionality is subject to change.
Note: That the tests on the logical expressions has not yet implemented.
Default Home
Each Default home definition is represented by a DSXHOM element the element must be
referenced from distributed attributes, for example: DSXSCH (where to store elements).
The common DSX data structure that contains both distributed attributes and default home
definition.
DSXWLD Element
The DSXWLD is the top level element for storing distributed attribute schemas and default
home selectors. It does not contain any attributes of particular interest to distributed
attributes configuration. It can have DSXGRP as members.
DSXHOM overrides any DSXHOM definition on the DSXSCH level. The DSXOWN element
can have DSXMBR as members.
DSXTST Element
The DSXTST defines a test that needs to yield true upon evaluation for considering using
this default home, it contains a test expression defined in PML1. The expression operates
on the current binding element.
DSXDST Element
The DSXDST denotes the default home value as a text string. It also contains a test that
needs to yield true upon evaluation for considering this default home being valid.
DATT NEW
The NEW command creates a new distributed attribute and associates the CE/on element
with it.
Syntax:
DATT NEW <type> [on <element>]
The example creates a new distributed attribute of type :PRESSURE and associates it with
CE.
Example:
DATT NEW :PRESSURE
19.4.3 Q ATT
The existing Q ATT have been extended to allow for querying distributed attributes.
Syntax:
Q ATT [AS ANY | <type>]
The command displays all the values of the :PROCESS type associated with CE.
Example:
Q ATT AS :PROCESS
:UDANAME\:UDETNAME
Example:
-- Query the value of the :local\:process distributed attribute on CE
Q :LOCAL\:PROCESS
:local\process true
-- Set the value of distributed attribute :local\:process to false
:LOCAL\:PROCESS false
-- Query all LNLIST elements where distributed attribute :local\:process equals true
Q ALL LNLIST WITH (:LOCAL\PROCESS EQ true)
-- Query the value of the second instance of distributed attribute :local\:process
Q :LOCAL\:PROCESS[2]
:local\process[2] true
-- Set the value of the second instance of distributed attribute :local\:process to false
:LOCAL\:PROCESS[2] false
-- Query all LNLIST elements where second instance of distributed attribute :local\:process
equals true
Q ALL LNLIST WITH (:LOCAL\PROCESS[2] EQ true)
Note: The evaluation finds the associated DSXHOM from the typename qualifier, after that
processing is the same as for the generic case.
Using it for generic "find a default home" purposes: The DSXHOM reference passed as
a qualifier is used to evaluate the expressions defined in the DSXTST/DSXDST of that
DSXHOM. It returns a nulref of the ref of the ID value held in the DHTEXT attribute of the
resulting DSXDST. The CE is passed to the expression for evaluation.
Example:
-- distributed attributes, get the location to store distributed attributes of type process for CE.
Q DFHOME ( TYPENAME :PROCESS )
DFHOME /THEPROCESSWORLD
-- Generic example, get the reference that results of evaluation the DSXHOM /
MyHomeSelector for /TESTTHIS.
Q DFHOME ( /MyHomeSelector ) OF /TESTTHIS
DFHOME /STOREITHERE
19.8 Datal
As a complement to normal Datal processing of distributed attributes, there is a specialized
support that generates datals with the distributed attributes syntax.
Syntax:
OUTPUT INCLUDE Distributed/ATTRIBUTES ... <SELELE> and
other options
For example: getting everything under the ZONE /MyZone including any distributed
attributes would be done by executing the following output command:
OUTPUT INCLUDE DistributedA /MyZone
Part of the output would resemble the following, with the distributed attributes statements
included:
NEW EQUI
DATT NEW :Process
:Local\:Process false
END
This chapter gives recommendations for copying hull data between projects in AVEVA (12
Series).
20.2.1 Export
As a preparation for an export a set of elements have to be collected as source to the
operation. Drag & drop, with the list view of the tool as target, is the method to build a
collection of elements for export. Below, the functions related to an export operation are
described:
New Makes the tool ready to build a new collection of elements for export.
Options The collection of elements explicitly selected through drag & drop can be
further extended to include also referred elements. Through a number of
predefined reference filters it is possible to optionally change the settings of
respective filter and view the result of the expansion. For further details
about reference filters, see Include Associated Data below.
Show all Toggle between viewing only the elements explicitly selected, alternatively
viewing the complete extended collection made through the Options func-
tion.
Export Creates a Copy Set named and located in a folder specified by user. The
collection of elements in the list view will be the contents of the Copy Set.
20.2.2 Import
The functions related to an import operation are:
Open User is asked to specify the Copy Set to open and make ready for import.
The content of the opened Copy Set is shown in the list view. It is possible
to reduce the list view by items not of interest for the import.
Import Respective item of the list view is processed and imported into the current
project.
The list view responds to key commands and thereby it is possible e.g. to reduce the list by
help of the Delete key.
PlanarPanelAssembly Assembly
CurvedPlateAssembly Assembly
CurvedPlateDeps CurvedPanel
CurvedProfileAssembly Assembly
CurvedProfileDeps CurvedPanel
ProductionPlate NestPlate
NestPlate RawPlate
ProductionProfile NestProfile
Assembly Filters
Operates on ASMBLY, ASWLD
AssemblyPlanarPanel PlanarPanel
AssemblyCurvedPlate CurvedPlate
20.2.5 Prerequisites
Note that the target project must be properly set up before copying hull data with
MarineCopyAssistant:
• Place holders for top level elements must be created in advance. This is done with the
dbprompt utility.
• Hull setup objects such as Hullref and Structref must exist.
20.2.6 Limitations
Exporting and importing drawings may cause loss of some data as it is only the SBD file that
is copied and not the part of data stored in the PADD database. The loss of data may affect
Dimensions, intelligent text expressions and labels.
Examples:
CLEANU NULL STLREF ON EQUI DELETE
Deletes all EQUI with STLREF equal null (=0/0)
CLEANU UNRES CATREF FOR /PIPES SETNULL
Sets all unresolved CATREF in the /PIPES hierarchy to null (=0/0)
CLEANU INVALID CATREF
Sets all unresolved CATREF in the hierarchy under CE to null
Index
A in expressions . . . . . . . . . . . . . . . . 9:46
Configuration . . . . . . . . . . . . . . . . . . . . 19:3
ABS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:16 COSINE . . . . . . . . . . . . . . . . . . . . . . . . 9:19
ACOS . . . . . . . . . . . . . . . . . . . . . . . . . . 9:16 CREATED . . . . . . . . . . . . . . . . . . . . . . . 9:7
ADD . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:13
AFTER . . . . . . . . . . . . . . . . . . . . . . . . . 9:34
ALOG . . . . . . . . . . . . . . . . . . . . . 9:17, 9:20
D
AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:4 Database changes
ARRAY . . . . . . . . . . . . . . . . . . . . . . . . . 9:17 querying history . . . . . . . . . . . . . . . 12:1
Array variables Datal . . . . . . . . . . . . . . . . . . . . . . . . . . 19:14
selecting ( only) . . . . . . . . . . . . . . . 11:1 DEFINED . . . . . . . . . . . . . . . . . . . . . . . . 9:7
ARRAYSIZE . . . . . . . . . . . . . . . . . . . . . 9:17 DELETED . . . . . . . . . . . . . . . . . . . . . . . . 9:7
ARRAYWIDTH . . . . . . . . . . . . . . . . . . . 9:18 Design Reuse . . . . . . . . . . . . . . . . . . . . 20:1
ASIN . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:16 DIFFERENCE command . . . . . . . . . . . 12:8
ATAN . . . . . . . . . . . . . . . . . . . . . . . . . . 9:16 DISTANCE . . . . . . . . . . . . . . . . . . . . . . 9:36
ATANT . . . . . . . . . . . . . . . . . . . . . . . . . 9:16 format . . . . . . . . . . . . . . . . . . . . . . . 9:36
Attributes US format . . . . . . . . . . . . . . . . . . . . 9:36
in expressions . . . . . . . . . . . . . . . . 9:45 DIVIDE . . . . . . . . . . . . . . . . . . . . . . . . . 9:14
B E
BADREF . . . . . . . . . . . . . . . . . . . . . . . . . 9:6 EMPTY . . . . . . . . . . . . . . . . . . . . . . . . . . 9:8
BEFORE . . . . . . . . . . . . . . . . . . . . . . . . 9:34 EQUAL . . . . . . . . . . . . . . . . . . . . . . . . . . 9:4
Boolean operators . . . . . . . . . . . . . . . . . . 9:3 Explicit mode
Bound Attributes multiwrite DBs . . . . . . . . . . . . . . . . . 6:1
and Attribute Syntax . . . . . . . . . . . 19:11 Expressions
Configuration and Usage Details . . 19:7 directions in . . . . . . . . . . . . . . 9:30, 9:31
format . . . . . . . . . . . . . . . . . . . . . . . . 9:1
C IDS in . . . . . . . . . . . . . . . . . . . . . . . 9:26
logical . . . . . . . . . . . . . . . . . . . . . . . . 9:2
COLLECT command . . . . . . . . . . . . . . . 11:1 logical array . . . . . . . . . . . . . . . . . . 9:12
Collections . . . . . . . . . . . . . . . . . . . . . . 11:1 nesting . . . . . . . . . . . . . . . . . . . . . . . 9:2
COMP . . . OF . . . . . . . . . . . . . . . . . . . . 9:18 numeric . . . . . . . . . . . . . . . . . . . . . 9:12
Comparator operators . . . . . . . . . . . . . . . 9:3 positions in . . . . . . . . . . . . . . . . . . . 9:26
Comparison precision precision of comparisons . . . . . . . . 9:46
F O
Format distances . . . . . . . . . . . . . . . . . 9:37 OCCUR . . . . . . . . . . . . . . . . . . . . . . . . 9:22
FROM . . . . . . . . . . . . . . . . . . . . . . . . . . 9:28 Operators
Functions logical . . . . . . . . . . . . . . . . . . . . . . . . 9:3
logical . . . . . . . . . . . . . . . . . . . . . . . . 9:6 numeric . . . . . . . . . . . . . . . . . . . . . 9:13
numeric . . . . . . . . . . . . . . . . . . . . . . 9:15 precedence . . . . . . . . . . . . . . . . . . . 9:2
real . . . . . . . . . . . . . . . . . . . . . . . . . 9:15 text . . . . . . . . . . . . . . . . . . . . . . . . . 9:33
text . . . . . . . . . . . . . . . . . . . . . . . . . 9:34 OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:6
G P
GE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:5 PART . . . . . . . . . . . . . . . . . . . . . . . . . . 9:39
Group element . . . . . . . . . . . . . . . . . . . . 8:6 PML2 Support . . . . . . . . . . . . . . . . . . 19:12
GT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:5 Positions
comparing . . . . . . . . . . . . . . . . . . . 9:29
I POWER . . . . . . . . . . . . . . . . . . . . . . . . 9:23
Pseudo Attributes
IDs in expressions . . . . . . . . . . . . . . . . . 9:26 Associated with Bound Attributes 19:12
Implicit mode
multiwrite DBs . . . . . . . . . . . . . . . . . 6:1 Q
INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:20
Querying
L variables and expressions . . . . . . . 9:45
U
UNDEFINED . . . . . . . . . . . . . . . . . . . . . . 9:7
Undefined values
in expressions . . . . . . . . . . . . . . . . 9:46
Units
in expressions . . . . . . . . . . . . . . . . 9:25
UNSET . . . . . . . . . . . . . . . . . . . . . . . . . 9:11
Unset values
in expressions . . . . . . . . . . . . . . . . 9:46
US format distances . . . . . . . . . . . . . . . 9:37
V
VAR command . . . . . . . . . . . . . . . . . . . 11:1
VLOGICAL . . . . . . . . . . . . . . . . . . . . . . 9:11
VTEXT . . . . . . . . . . . . . . . . . . . . . . . . . 9:44
VVALUE . . . . . . . . . . . . . . . . . . . . . . . . 9:24
W
WRT . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:27