Sie sind auf Seite 1von 336

Software Customisation

Reference Manual
AVEVA Solutions Limited

PML 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 shall have no liability in contract, tort (including negligence), or otherwise, arising in connection with the
performance of the AVEVA software where the faulty performance of the AVEVA software results from a user's
modification of the AVEVA software. User's rights to modify the AVEVA software are strictly limited to those set out
in the Customisation Manual.
1.4 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.
1.5 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.6 Clauses 1.1 to 1.5 shall apply to the fullest extent permissible at law.
1.7. 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.

PML 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. Subject to the user's rights, as set
out in the customisation manuals to amend PML software files contained in the PDMSUI and PMLLIB folders and
any configuration files, 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.

PML 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.
Software Customisation Reference Manual

Revision Sheet

Date Version Comments / Remarks


September 2011 12.1.1 Event Driven Graphics added.
January 2012 Copyright added to all pages.
Bearing and Elevation members added.
Change to Gadget’s Width and Height.
Software Customisation Reference Manual
Software Customisation Reference Manual

Software Customisation Reference Manual

Contents Page

Reference Manual
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:1
Summary of Objects, Members and Methods . . . . . . . . . . . . . . . . . 2:1
Object Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:1
Methods Available to All Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:3
Forms and Menus Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:4
Members Contained by All Gadgets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:4
Summary of Gadget-Specific Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:5
Gadget Syntax Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:6
Rules for Presenting and Using Syntax Graphs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:6
Setting Up Gadget Anchoring: <fganch> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:7
Setting Up Gadget Docking: <fgdock> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:7
Setting-Up the Gadget’s Position: <fgpos> and <fgprl> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:8
Setting Up the Gadget’s Width and Height: <vshap>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:9
Setting Up the Gadget’s Tagwidth (TEXT, TOGGLE and OPTION): <fgtagw> . . . . . . . . . 2:10
Setting Up the Gadget’s 2D Screen Position: <xypos> . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:10
Object Type Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:11
ALERT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:11
ARC Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:12
ARRAY Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:21
BANNER Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:25
BAR Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:26
BLOCK Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:28
BOOLEAN Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:28

© Copyright 1974 to current year. i 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual

BORE Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:29


BUTTON Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:30
COLLECTION Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:34
COLUMN Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:35
COLUMNFORMAT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:36
COMBOBOX Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:38
CONTAINER Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:42
DATEFORMAT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:43
DATETIME Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:44
DB Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:46
DBREF Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:48
DBSESS Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:49
DIRECTION Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:49
EXPRESSION Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:51
FILE Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:52
FMSYS Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:54
FORM Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:57
FORMAT Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:66
FRAME Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:70
Graphical Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:74
IDList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:76
LINE Gadget. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:78
LINE Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:79
LINEARGRID Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:88
LIST Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:90
LOCATION Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:95
MACRO Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:97
MDB Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:97
MEASURE Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:99
MENU Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:101
Multi Discipline Route Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:108
NUMERICINPUT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:114
OBJECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:115
OPTION Gadget. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:116
ORIENTATION Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:119
PARAGRAPH Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:121
PLANE Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:123
PLANTGRID Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:127
PLATFORMGRID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:128
PMLReport Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:131

© Copyright 1974 to current year. ii 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual

PMLSECURELOGIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:133
PMLUSERLOGIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:134
POINTVECTOR Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:134
POSITION Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:137
POSTEVENTS Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:142
PROJECT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:143
PROFILE Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:144
RADIALGRID Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:154
REAL Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:156
REPORT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:161
RTOGGLE Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:164
Section Plane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:166
Section Plane Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:168
SELECTOR Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:171
SESSION Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:174
SLIDER Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:176
STRING Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:178
STATE ............................................................ 2:185
TABLE Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:185
TEAM Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:187
TEXT Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:188
TEXTPANE Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:191
TOGGLE Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:193
UNDOABLE Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:195
UNIT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:196
USER Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:198
VERIFY ............................................................ 2:199
ViewFinder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:199
VIEW Gadget: ALPHA Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:201
VIEW Gadget: AREA View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:202
VIEW Gadget: PLOT View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:204
VIEW Gadget: VOLUME Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:206
XYPosition Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:209

Event Driven Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:1


Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:1
Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:1
Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:2
Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:2

© Copyright 1974 to current year. iii 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual

Target Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:2


Superseded Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:2
Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:3
Main Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:3
Secondary Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:3
Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:4
Event Driven Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:4
Picking .............................................................. 3:4
Pick Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:5
Event Packet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:5
Event Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:5
Event Control System (edgCntrl) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:6
Published Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:7
Add Packet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:8
Remove Packet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:9
Change Prompts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:9
View the Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:10
Limitations and Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:11
Event Packet (edgPacket) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:11
Published Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:15
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:23
Limitations and Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:29
Pick Packet (edgPickPacket) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:30
Published Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:31
Examples (Defining Pick Sequences) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:52
Examples (Using Pick Packets) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:54
Limitations and Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:56
Pick Type (edgPickType) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:56
Published Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:57
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:59
Limitations and Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:59
Pick (edgPick). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:59
Pick Filtering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:59
Rule Combination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:60
Published Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:61
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:61
Limitations and Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:63
Pick Data (edgPickData) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:63

© Copyright 1974 to current year. iv 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual

Published Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:63


Picked Position Data (edgPositionData) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:64
Published Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:65

PML 1 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .A:1


Format of Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:1
Operator Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:2
Nesting Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:2
Logical Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:2
Logical Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:3
Logical Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:6
Logical Array Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:11
Numeric (Real) Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:12
Real Physical Quantities with Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:12
Numeric (Real) Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:13
ADD and SUBTRACT (+ and -) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:13
MULTIPLY and DIVIDE (* and /) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:13
Numeric (Real) Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:14
Real Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:22
Using IDs in Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:22
Positions, Directions and Orientations in Expressions (PDMS only) . . . . . . . A:23
Using Positions in Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:23
WRT (PDMS Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:23
FROM ............................................................. A:25
Comparing Positions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:27
POLAR ............................................................. A:28
Direction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:29
Orientations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:30
Text Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:31
Text Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:31
Text Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:32
Late Evaluation of Variables in Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . A:40
Attributes in Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:41
Querying Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:41
Units in Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:41
Precision of Comparisons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:42
Undefined Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:42

© Copyright 1974 to current year. v 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual

Unset Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:43

© Copyright 1974 to current year. vi 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Introduction

1 Introduction

This manual is the Reference Manual for the AVEVA Programming Language, PML.
It is intended for users who are already familiar with PML. Users who are starting to use
PML should refer to the Software Customisation Guide, which should be used together with
this manual.
There are two versions of PML, the older one, known as PML 1, and the newer one, known
as PML 2. PML 2 has been written specifically for creating and customising the AVEVA GUI,
and this manual is mainly concerned with PML 2.
However, PML 2 has not completely replaced PML 1, and there are some tasks which are
carried out more efficiently using PML 1 facilities. In particular, this manual describes the
PML 1 expressions package, which is used within PDMS; for example, for writing rules and
defining report templates. You should also refer to the Database Management Reference
Manual.
This manual contains:
• A list of PML 2 Objects, Members and Methods. For the Forms and Menus objects, the
command syntax relating to the objects is included.
Note: Many properties of Forms and Gadgets that were previously set using commands
should now be set using the Form or Gadget methods. In general, the only
commands described are those which have not been replaced by methods. If you
are maintaining old code, you may need to refer to the edition of the AVEVA Software
Customisation Guide dated October 1995, which describes the old syntax in detail.

• Information about using PML in Review.


• A description of the PML 1 expressions package.

© Copyright 1974 to current year. 1:1 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Introduction

© Copyright 1974 to current year. 1:2 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2 Summary of Objects, Members and Methods

2.1 Object Classification


The table below lists the object types and shows which classifications they belong to.

Classification Object Type


PML Built-in Objects ARRAY
BLOCK
BOOLEAN
FILE
OBJECT
REAL
STRING
DATETIME
UNIT
MEASURE
3D Geometry Objects ARC
LINE
LINEARGRID
LOCATION
PLANE
PLANTGRID
POINTVECTOR
POSTEVENTS
PROFILE
RADIAL GRID
XYPOSITION

© Copyright 1974 to current year. 2:1 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Classification Object Type


PDMS Objects BANNER
BORE
DB
DBREF
DBSESS
DIRECTION
MACRO
MDB
ORIENTATION
POSITION
POSTUNDO
PROJECT
SESSION
TEAM
UNDOABLE
USER
Forms and Menu Objects & ALERT
Gadgets
BAR
BUTTON
COMBOBOX
CONTAINER
FMSYS
FORM
FRAME
LINE
LIST
MENU
NUMERIC
OPTION
PARAGRAPH
RTOGGLE
SELECTOR

© Copyright 1974 to current year. 2:2 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Classification Object Type


SLIDER
TEXT
TEXTPANE
TOGGLE
VIEW ALPHA
AREA
PLOT
VOLUME
Collection and Report Objects COLLECTION
COLUMN
COLUMN-FORMAT
DATE-FORMAT
EXPRESSION
REPORT
TABLE
Formatting Text FORMAT

Table 2: 1. Object Types and Classification

2.2 Methods Available to All Objects


The table following lists the methods available to all objects. The table gives the name of
each method and the type of result you get back from it.
The third column of the table describes what the method does.

Name Result Purpose


Attribute( 'Name') ANY To set or get a member of an
object, providing the member
name as a STRING.
Attributes() ARRAY OF To get a list of the names of
STRINGS the members of an object as
an array of STRING.
Delete() NO RESULT Destroy the object - make it
undefined
EQ(any) BOOLEAN Type-dependent comparison
LT(any) BOOLEAN Type-dependent comparison
(converting first to STRING if
all else fails)

© Copyright 1974 to current year. 2:3 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Max(any) ANY Return maximum of object
and second object
Min(any) ANY Return minimum of object
and second object
NEQ(any) BOOLEAN TRUE if objects do not have
the same value(s)
ObjectType() STRING Return the type of the object
as a string
Set() BOOLEAN TRUE if the object has been
given a value(s)
String() STRING Convert the object to a
STRING
Unset() BOOLEAN TRUE if the object does not
have a value

Table 2: 2. Methods Available to All Objects

2.3 Forms and Menus Objects

2.3.1 Members Contained by All Gadgets


All gadgets contain the following members.

Name Type Purpose


visible BOOLEAN You query this member to
determine if a gadget is
Get/Set
visible or invisible.
To make a gadget visible, set
it to TRUE; to make the
gadget invisible, set it to
FALSE.
active BOOLEAN You query this member to
determine if a gadget is
Get/Set
active or inactive (greyed-
out).
To make a gadget active, set
it to TRUE; to make the
gadget inactive, set it to
FALSE.

© Copyright 1974 to current year. 2:4 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Type Purpose


callback STRING Query or assign the gadget’s
callback string
Get/Set
tag STRING Query or assign a gadget’s
tag text. This is not displayed
Get/Set
for all gadgets.

Table 2: 3. Members Contained by All Gadgets

2.3.2 Summary of Gadget-Specific Methods


The table below summarises the methods that different gadgets support.
Bar
Button
List
Option
Para
Slider
Text
Text-pane
Toggle /Rtoggle
View Alpha
View 2D
View 3D
Numeric Input
Container
Combobox
Frame
Line
Selector
View:Plot
Add X X X X
Background X X X X X X X X X X X X
Clear X X X X X X X X
ClearSelection X X X X
Container X X X X X X X X X X X X X X
CurPos X
DisplayText X X
FieldProperty X
FullName X X X X X X X X X X X X X X X X X X X
GetPickedPopup X X X X X X X X X X X X X X X
Highlight X X X
InsertAfter X
InsertBefore X
Line X
Name X X X X X X X X X X X X X X X
Owner X X X X X X X X X X X X X X X
Refresh X X X X X X X X X X X X X X X X X X
RemovePopup X X X X X X X X X X X X X X X X
RestoreView X X
RToggle X
Select X X X X
Selection X X X X
SetActive X
SetBackground X X X X X X X
SetColumns X
SetCurPos X

© Copyright 1974 to current year. 2:5 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Bar
Button
List
Option
Para
Slider
Text
Text-pane
Toggle /Rtoggle
View Alpha
View 2D
View 3D
Numeric Input
Container
Combobox
Frame
Line
Selector
View:Plot
SetEditable X X
SetFieldProperty X
SetFocus X X X X X X X X X X X
SetHeadings X
SetLine X
SetPopup X X X X X X X X X X X X X X X
SetRange X
SetRows X
SetSize X X X X
SetTooltip X X X X X X X X X
SetValue X
Shown X X X X X X X X X X X X X X X X X X X
ShowPopup X
Subtype X X X X X X X X X X X X X X X X X X X
Type X X X X X X X X X X X X X X X X X X X
ValidateCall X

Table 2: 4. Summary of Gadget-Specific Methods

2.4 Gadget Syntax Graphs

2.4.1 Rules for Presenting and Using Syntax Graphs


The rules for syntax graphs are as follows:
1. Each graph represents a command (or part of a command) to PDMS to perform
specified actions with specified data. The graph is entered at “graph_name>--“ or “>-
-”, and exited at “-->”. The allowed flow in a graph is top to bottom, and left to right,
except where indicated otherwise by a “*“ or “<“ symbol.
2. Vertical lines with one or more “+“ symbols represent a new state. These are always
traversed downwards. There should be a “+” for each allowable entry point into a state.
The “+” symbols can only be traversed from left to right.
3. Horizontals to the right of state lines, represent command words and data which are
allowable in the state. They can only be traversed from left to right.
1. Words starting with capitals represent command words. The capitalized part
represents the minimum syntax which is recognized. Lower case parts denote
optional characters. The whole thing is actually case independent as far as the user
is concerned.
2. Words enclosed in “< >“ represent a call to the named graph. These should be
lower case. Graph calls can be recursive.
3. Words in lower case only, represent ‘notionally’ atomic data items, e.g. text, integer,
val (numeric value). Sometimes they are in fact graph calls, e.g. ‘fname’ and

© Copyright 1974 to current year. 2:6 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

‘gname’. Sometimes they are fictitious e.g. ‘tagtext’, but more helpful than just
“text” and easier to understand than a reference to, say, <fgtag>.
4. Continuous vertical and horizontal lines without a “ + “ symbol represent flow lines of
the graph.
1. The presence of a “*“ symbol in a vertical line indicates that the allowed direction of
traverse is upwards.
2. The presence of a “<“ symbol on a horizontal indicates that the allowed direction of
traverse is backwards.
3. The symbols “.“, “/“, “ ‘ “ are just cosmetic to help the graph to look better.

2.4.2 Setting Up Gadget Anchoring: <fganch>


The ANCHOR attribute allows you to control the position of an edge of the gadget relative to
the corresponding edge of its container.
For example ANCHOR RIGHT specifies that the right hand edge of the gadget will maintain
a fixed distance from the right hand edge of its owning container.

.---<-------------.
/ |
>-- <fganch> -----------+-- ANCHOR --+--+- Left ----. |
| +- Right ---| |
| +- Top -----| |
| ‘- Bottom --+---+---*
| |
+---- None ----|
‘---- All------’-->

Figure 2:1. Syntax Graph -: Gadget Anchoring

2.4.3 Setting Up Gadget Docking: <fgdock>


The DOCK attribute allows you to dock a gadget to the left, right, top, or bottom edge of its
container, typically a form or a frame; or you can cause the gadget to dock to all edges, or to
no edges.

>-- <fgdock> -----------+-- DOCK ----+-----Left ----.


+---- Right ---|
+---- Top -----|
+---- Bottom --|
+---- None ----|
‘---- Fill ----’-->

Figure 2:2. Syntax Graph - Gadget Docking

Note: The DOCK and ANCHOR attributes are mutually exclusive.


Setting the DOCK attribute resets the ANCHOR to the default; setting the ANCHOR
attribute resets DOCK to none.
You can set these attributes only when you define the gadget: you cannot change it
after the exit from form setup. Thus you are not allowed to the resize behaviour at
run-time.

© Copyright 1974 to current year. 2:7 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.4.4 Setting-Up the Gadget’s Position: <fgpos> and <fgprl>


You can use the AT syntax, shown below on the <fgpos> graph, to define the position of a
gadget’s origin within a form.
You can specify the position absolutely (in form layout grid units) or relative to the
extremities of existing gadgets, or relative to the size of the form and the gadget.

>-- <fgpos> -- AT --+- val val -------------------------------.


+- X val ------------. |
+- XMIN -. | |
+- XCEN -| | |
+- XMAX -+- <fgprl> -| |
‘--------‘-----------+- Y val ------------|
+- YMIN -. |
+- YCEN -| |
+- YMAX -‘- <fgprl> -|
‘--------------------‘-->

Figure 2:3. Syntax Graph - Absolute Positioning

The subgraph <fgprl>, shown below, sets the gadget position relative to another gadget or
the form’s extent. For example, you can use it to position a gadget halfway across the width
of a form.

>-- <fgprl> --+- <gname> -.


+-- FORM ---|
‘-----------+- * val -----.
| |
+- + val --. |
+- - val --‘--+- + val * SIZE ---.
| +- - val * SIZE ---|
| +- + SIZE ---------|
| +- - SIZE ---------|
| ‘------------------|
+- + SIZE -----------------------|
+- - SIZE -----------------------|
‘--------------------------------‘-->

Figure 2:4. Syntax Graph -: Relative Positioning

Examples of Using the AT Syntax

AT 5 7.5 Puts gadget origin at form grid coordinates (5, 7.5).


AT X 5.5 Puts gadget origin at form grid coordinates (5.5, y) where
y is calculated automatically from the y extremity of the
last placed gadget and the current VDISTANCE setting.
AT YMAX+1 Positions new gadget at (x, y) where x is calculated
automatically from the x extremity of the last placed
gadget and the current HDISTANCE setting. y is at
YMAX+1 of the last gadget.

© Copyright 1974 to current year. 2:8 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

AT XMIN.GAD1-2 Positions new gadget with respect to two existing


YMAX.GAD2+1 gadgets. Gadget is offset by 2 grid units to the left of
GAD1(X=XMIN-2) and 1 unit below .GAD2
(Y=YMAX+1).
AT XMAX FORM-SIZE YMAX XMAX FORM refers to the current right hand size of the
FORM-SIZE form at its current stage of definition (not its final
maximum extent). YMAX FORM refers to the form’s
current bottom extent. The -SIZE option subtracts the
size of the gadget being positioned in the form. This
example positions the gadget at the extreme right-hand
bottom edge of the form.

2.4.5 Setting Up the Gadget’s Width and Height: <vshap>


This operation allows you to set a gadget’s width and height.

>-- <vshap> --+- <vwid> --+- <vhei> --------.


| +- ASPect (h/w) --|
| ‘-----------------‘-->
|
‘- <vhei> --+- <vwid> --------.
+- ASPect (h/w) --|
‘-----------------‘-->

Figure 2:5. Syntax Graph -: Gadget Geometry <vshap>

h/w is the value of the Aspect Ratio (height/width).


The units for <vshap> will have been preset to pixels or F&M grid units, appropriately.
The default width and height for <vshap> will have been preset, so leaving the graph with
only width or height set still realises both values.
All values may be given as integer or reals.

Setting the Height: <vwid>

>-- <vwid> -- WIDth --+- val -->


|
+- TO --+- MIN -.
| +- CEN -|
| '- MAX -'-+- <gname> -. .---<---.
| +-- FORM ---| / |
| '-----------'-+- * val -+-->
| +- + --.
| '- - --+--- val ---.
| +-- HDIST --|
| '- PADDING -'-->
+- <gname> -. .---<---.
| |/ |
'-----------+- * val -+-->
+- + --.
'- - --+--- val ---.
+-- HDIST --|
'- PADDING -'-->

© Copyright 1974 to current year. 2:9 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Setting the Width: <vhei>

>-- <vhei> -+- HEIght -.


+- LENgth -|
'- LINes --+- val -->
|
+- TO --+- MIN -.
| +- CEN -|
| '- MAX -'-+- <gname> -. .---<---.
| +-- FORM ---| / |
| '-----------'-+- * val -+-->
| +- + --.
| '- - --+--- val ---.
| +-- VDIST --|
| '- PADDING -'-->
+- <gname> -. .---<---.
| |/ |
'-----------+- * val -+-->
+- + --.
'- - --+--- val ---.
+-- VDIST --|
'- PADDING -'-->

2.4.6 Setting Up the Gadget’s Tagwidth (TEXT, TOGGLE and OPTION):


<fgtagw>
The TAGWIDTH specifies the size of the gadget’s tag field in grid width units including any
padding space, regardless of the actual tag string. Tagwidth is not needed for gadgets with
an explicit area specification (width and height, lines or length). FRAME, LIST, SELECTOR,
TEXTPANE and PARAGRAPH can always force an explicit width.
The syntax graph <fgtagw> defines the Tag specification

>-- <fgtagw> --+- TAGWIDth val -+-------------.


‘----------------‘-- tagtext --‘-->

Figure 2:6. Syntax Graph -: Gadget Tagwidth

The <fgtagw> graph supports both the simple ‘tagtext’ setting and/or the specification of the
maximum width of any tag.
If the tag width is not explicitly given then it is assumed to be the number of characters in the
‘tagtext’ string multiplied by the horizontal grid size (the notional character width for the font).
You can specify the tag width without specifying any tagtext at definition time; this can be
added at run time.

2.4.7 Setting Up the Gadget’s 2D Screen Position: <xypos>


This shows how to set up a gadget’s 2D screen position in normalized co-ordinates.

<xypos>--+- XR val -+- YR val -.


‘- YR val -+- XR val -‘-->

Figure 2:7. Syntax Graph - Gadget's 2d Screen Position

© Copyright 1974 to current year. 2:10 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Note: Normalized co-ordinates represent a proportion of the full screen size.


0.0 <= XR <= 1.0 and 0.0 <= YR <= 1.0.

2.5 Object Type Details


This section contains details of the object types listed in Table 2: 1.: Object Types and
Classification.

2.5.1 ALERT Object

Methods

Name Result Purpose


Confirm( Message is STRING, X is STRING Show a blocking CONFIRM
REAL, Y is REAL ) ‘YES’ OR ALERT and retrieve the
‘NO’ response. X and Y are
optional screen positions.
Error(Message is STRING, X is STRING Show a blocking ERROR
REAL, Y is REAL ) ‘YES’ ALERT and retrieve the
response. X and Y are
optional screen positions.
Message(Message is STRING, X is STRING Show a blocking MESSAGE
REAL, Y is REAL) ‘YES’ ALERT and retrieve the
response and retrieve the
response. X and Y are
optional screen positions.
Question(Message is STRING, X is STRING Show a blocking QUESTION
REAL, Y is REAL ) ‘YES’, ‘NO’ ALERT and retrieve the
OR response. X and Y are
‘CANCEL’ optional screen positions.
Warning(Message is STRING, X is STRING Show a blocking WARNING
REAL, Y is REAL) ‘YES’ ALERT and retrieve the
response and retrieve the
response. X and Y are
optional screen positions.

© Copyright 1974 to current year. 2:11 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


!!Alert.Input( ! prompt is STRING Show a blocking INPUT
STRING, !default is STRING) is ALERT. !prompt is the
STRING prompt displayed to the user,
and !default is the default
value in the text box.
!!Alert.Input( !prompt is STRING Show a blocking INPUT
STRING, !default is STRING, xPos ALERT. !prompt is the
is REAL, yPos is REAL) is STRING prompt displayed to the user,
and !default is the default
value in the text box. xPos
and yPos are the
coordinates of the top left-
hand corner of the alert box.

Table 2: 5. Alert Object Methods

2.5.2 ARC Object

Basic ARC Definition: Members

Name Type Purpose


Orientation ORIENTATI Orientation of the arc.
ON
Get/Set
Position POSITION Origin/Centre of the arc.
Get/Set
Radius REAL Radius of the arc
Get/Set
StartAngle REAL Angle from X axes to start of
Get/Set the arc.
EndAngle REAL Angle from X axes to end of
Get/Set the arc.
Sense BOOLEAN Arc sense:
Get/Set
·0 for clockwise
·1 for anti-clockwise

Table 2: 6. Basic ARC Definition Members

© Copyright 1974 to current year. 2:12 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Basic ARC Definition: Methods


These methods do not modify the original object.

Name Result Purpose


Arc( POSITION, ORIENTATION, ARC Creates an arc with the given
REAL, REAL, REAL,BOOLEAN) Position, Orientation, Start
Angle, End Angle, Radius. If
the last argument is TRUE,
the arc is clockwise.
String() STRING Returns the arc as a string

Table 2: 7. Basic ARC Definition Methods

© Copyright 1974 to current year. 2:13 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

ARC Methods that Return ARCs


None of these methods modifies the original object.

Name Result Purpose


StartPosition(POSITION) ARC Returns a new arc, based on
the original, where the start
angle, if defined as the angle
from the centre of the arc
through the passed position
mapped onto the arc plane,
forms the X axis.
EndPosition(POSITION) ARC As StartPosition, but for
the EndAngle.
Through(POSITION) ARC Returns a new arc, where the
radius (of the full circle)
passes through the passed
position when mapped onto
the arc plane.
ChordHeight(REAL) ARC Returns a new arc, based on
the original, where the
EndAngle is in such a
position to produce the
passed chord height.
Chord height > Radius or
Chord height < 0 return unset
objects.
New arc should not produce
subtended angle > 180.
Chord(REAL) ARC Returns a new arc,
maintaining the original
StartAngle, so the
EndAngle is at the specified
distance from the Start
Chord length > Radius * 2 or
< 0 return an unset object.
Circle() ARC Returns a full circle definition
of the arc.
Circle(BOOLEAN) ARC Returns a full circle definition
of the arc. If True, the arc is
anti-clock-wise
Complement() ARC Returns the complementary
arc of the arc definition (the
remainder of the circle)

Table 2: 8. ARC Methods that Return ARCs

© Copyright 1974 to current year. 2:14 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

EndPosition(POSITION)
Through(POSITION)

Complement()

Cord(REAL)

CordHeight(REAL)
StartPosition(POSITION)

Figure 2:8. ARCs Returned by ARC Methods

ARC Method that Returns POSITIONs


This method does not modify the original object.

Name Result Purpose


AnglePosition(REAL) POSITION Returns the position at the
specified angle on the arc.

Table 2: 9. ARC Methods that Return POSITIONs

AnglePosition(REAL)

Figure 2:9. POSITIONs Returned by ARC Methods

© Copyright 1974 to current year. 2:15 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

ARC Methods that Return DIRECTIONs


None of these methods modifies the original object.

Name Result Purpose


AngleDirection(REAL) DIRECTION Returns the direction from
the centre of the arc through
a point at the given angle
from the X axis
StartTangent() DIRECTION Returns the direction out of
the arc, tangential to the start
angle line. The “sense” of the
arc is used.
EndTangent() DIRECTION Returns the direction out of
the arc, tangential to the end
angle line. The “sense” of the
arc is used.
AngleTangent(REAL) DIRECTION Returns the direction,
tangential to the angle
passed.

Table 2: 10. ARC Methods that Return DIRECTIONs

AngleDirection(REAL)
EndTangent()

AngleTangent(REAL)
StartTangent()

Figure 2:10. DIRECTIONs Returned by ARC Methods

ARC Methods that Return XYOffsets


This method does not modify the original object.

Name Result Purpose


XYOffset(POSITION) XYPOSITI Returns the position, mapped
ON onto the arc plane, in term of
an XY offset from the arc plane
origin

Figure 2:11. ARC Methods that Return XYOffsets

© Copyright 1974 to current year. 2:16 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

XYOffset(POSITION)

Figure 2:12. XYOffsets Returned from ARC Methods

ARC Methods that Return REALs


None of these methods modifies the original object.

Name Result Purpose


Proportion(REAL) REAL Returns the position, in terms
of an angle from the X axis,
at the proportion from the
start angle of the arc:
Angle = (EndAngle -
StartAngle) * <real> +
StartAngle
Angle() REAL Returns the subtended angle
of the arc
Near(POSITION) REAL Returns the position, in terms
of an angle from the X axis,
to the position on the arc
plane of the passed position

Table 2: 11. ARC Methods that Return REALs (a)

Near(POSITION)

Proportion(REAL)

Figure 2:13. REALs Returned by ARC Methods (a)

© Copyright 1974 to current year. 2:17 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Chord() REAL Returns the chord length
between the start and end of
the arc definition
Length() REAL Returns the true length of the
arc line
ChordHeight() REAL Returns the chord height of
the arc line

Table 2: 12. ARC Methods that Return REALs (b)

Chord()

Length()

ChordHeight()

Figure 2:14. REALs Returned by ARC Methods (b)

ARC Intersection Methods that Return REAL ARRAYs


None of these methods modifies the original object.

Name Result Purpose


Intersections(LINE) REAL Returns the intersection
ARRAY points, in terms of angles
from the X axis, of the
passed line (mapped onto
arc plane) with the circle
defined by the arc
Intersections(PLANE) REAL Returns the intersection
ARRAY points, in terms of angles
from the X axis, of the
passed plane with the circle
defined by the arc

© Copyright 1974 to current year. 2:18 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Intersections(ARC) REAL Returns the intersection
ARRAY points, in terms of angles
from the X axis, of the circle
implied by the passed arc
with the circle defined by the
arc
The Arcs must be in the
same plane, i.e. the angle
between Z components of
the direction must be 0 or
180

Table 2: 13. ARC Intersection Methods that Return REAL ARRAYs

Intersections(LINE) Intersections(PLANE)

Intersections(ARC)

Figure 2:15. REAL ARRAYs Returned by ARC Intersection Methods

ARC Tangent Methods Returning Real Arrays


None of these methods modifies the original object.

Name Result Purpose


Tangents(POSITION) REAL Returns the points of
ARRAY tangency on the arc circle
from the passed position, in
terms of angles from the X
axis,
Tangents(ARC) REAL Returns the points of
ARRAY tangency on the arc circle for
the passed arc circle, in
terms of angles from the X
axis

© Copyright 1974 to current year. 2:19 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Split() REAL Splits the arc into a non-zero
ARRAY number of segments
Pole() POSITION Returns the pole position of
the arc

Table 2: 14. ARC Tangent Methods that Return REAL ARRAYs

Tangents(POSITION)

Tangents(ARC)

Figure 2:16. REAL ARRAYs Returned from ARC Tangent Methods

ARC Methods that Return BOOLEANs


None of these methods modify the original object.

Name Result Purpose


On(POSITION) BOOLEAN Returns true if the passed
position lies on the arc line
OnProjected(POSITION) BOOLEAN Returns true if the passed
position, when projected onto
the arc line, lies within it
OnExtended(POSITION) BOOLEAN Returns true if the passed
position, when mapped onto
the arc line, lies outside it

Table 2: 15. ARC Methods that Return BOOLEANs

© Copyright 1974 to current year. 2:20 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

On(POSITION) 8

On(POSITION) 9

Figure 2:17. ARRAY Object PML Built-in Type

2.5.3 ARRAY Object

Methods

Name Result Purpose


Append(ANY value) NO RESULT Append value as a new
element at the end of array.
AppendArray(ARRAY values) NO RESULT Append array values as new
elements at the end of array.
Clear() NO RESULT Remove all elements.
Compress() NO RESULT Removed all undefined
elements and re-index
remaining elements.
DeleteFrom( REAL index, REAL n) ARRAY Make undefined n elements
starting at index. Remaining
elements are not re-indexed
Returns an array of the
deleted elements (which
need not be assigned if not
wanted).
DeleteFrom( REAL index) ARRAY Make undefined elements
from index to end of array.
Returns an array of the
deleted elements.
Remaining elements not re-
indexed.

© Copyright 1974 to current year. 2:21 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


DeleteTo(REAL index, REAL n) ARRAY Make undefined n elements
up to index Returns an array
of the deleted elements
Remaining elements not re-
indexed.
DeleteTo(REAL index) ARRAY Make undefined elements
from start to index Returns
an array of the deleted
elements Remaining
elements not re-indexed.
Difference(ARRAY two) ARRAY Return an array of those
elements in the original array
not present in array two.
Duplicates will appear only
once
Empty() BOOLEAN TRUE if array is empty
Evaluate(BLOCK command) NEW Evaluate code in command
ARRAY at each element.
Find(ANY value) NEW Search original array for
ARRAY value and return an array of
index positions at which it
was found.
FindFirst(ANY value) REAL Return index of first
occurrence of value. Returns
UNSET if not found.
First() ANY Return value of first defined
element
From(REAL index, REAL n) ARRAY Copy sub array of n
elements starting at index.
From(REAL index) ARRAY Copy sub array starting at
index to end of array.
GetIndexed(REAL index) ANY Implements ARRAY[index]
(this is an internal method).
Indices() NEW Returns an array containing
ARRAY the indices of the target array
that have a value.
Insert(REAL index, ANY value) NO RESULT Insert value as a new
element at index.
Later elements are re-
indexed

© Copyright 1974 to current year. 2:22 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


InsertArray(REAL index, ARRAY NO RESULT Insert values as new
ANY values) elements with the first at
index.
Later elements are re-
indexed
Intersect(ARRAY two) NEW Return array of elements
ARRAY present in both arrays.
Duplicates will appear only
once.
Invert() NEW Returns an inverted copy of
ARRAY the array.
Last() ANY Return last element value.
MaxIndex() REAL Subscript of last defined
(non-empty) element.
MinIndex() REAL Subscript of first defined
(non-empty) element.
Overlay(REAL index, ARRAY two) NEW Replace array elements at
ARRAY index with elements from the
array two. Returns an array
of the elements which were
overwritten (which need not
be assigned if not required).
ReIndex(REAL ARRAY indices) NO RESULT Apply result of
SORTEDINDICES to re-
order array elements into
positions specified by
indices.
Remove(REAL nth) ANY Remove and Return nth
element (which need not be
assigned if not required).
Remaining elements are re-
indexed.
RemoveFirst() ANY Remove and Return first
element (which need not be
assigned if not required).
Remaining elements are re-
indexed.
RemoveFrom(REAL index, REAL n) NEW Remove and Return new
ARRAY array of n elements starting
with index (which need not
be assigned if not required).
Remaining elements are re-
indexed.

© Copyright 1974 to current year. 2:23 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


RemoveFrom(REAL index) NEW Remove and Return new
ARRAY array of elements from index
to end of array (which need
not be assigned if not
required).
Remaining elements are re-
indexed.
RemoveLast() ANY Remove and Return last
element (which need not be
assigned if not required).
Remaining elements are re-
indexed.
RemoveTo(REAL index, REAL n) NEW Remove and Return n
ARRAY elements from start to index
(which need not be assigned
if not required).
Remaining elements are re-
indexed.
RemoveTo(REAL index) NEW Remove and return elements
ARRAY from start to index (which
need not be assigned if not
required).
Remaining elements are re-
indexed.
Size() REAL Returns the number of
defined elements.
Sort() NO RESULT Sort array into ascending
order.
SortUnique() NEW Returns a sorted copy of the
ARRAY array with duplicates
removed.
SortedIndices() NEW REAL Return new array of indices
ARRAY representing the sorted order
of elements in array.
The array itself is not sorted.
To(REAL index, REAL n) ARRAY Copy sub array of n
elements from start to index.
To(REAL index) ARRAY Copy sub array from start of
array to index.
Union(ARRAY two) NEW Return array of elements
ARRAY present in either array
(duplicates will appear only
once).

© Copyright 1974 to current year. 2:24 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Unique() NO RESULT Discard duplicates and re-
index remaining elements.
Width() REAL Return the maximum width of
string elements (other
element types are ignored).

Table 2: 16. ARRAY Object Methods

2.5.4 BANNER Object

Members

Name Type Purpose


Company STRING Company name, up to 120
characters.
Copyright STRING AVEVA copyright, up to 80
characters.
Libraries ARRAY OF Library names
STRINGS
Name STRING Title for main windows, up to
13 characters
Short STRING Short form of company name
Status STRING PDMS release status

Table 2: 17. BANNER Object Members

Command

!BANNVAR = BANNER! $ Returns a BANNER object

© Copyright 1974 to current year. 2:25 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.5 BAR Gadget

Methods

Name Result Purpose


Add(STRING dText, STRING enu) NO RESULT Appends a barmenu field,
which can show the specified
menu as a pulldown menu.
The name of the pulldown
menu is given in menu; the
DTEXT of the field is given
by dText.
Clear() NO RESULT Removes all barmenu fields.
Using this method is
deprecated.
Clear(STRING dText) NO RESULT Removes all barmenu fields
after and including the one
with DTEXT dText.
Using this method is
deprecated.
FieldProperty(STRING field, BOOLEAN Get the value of the property
STRING property) named in property for the
menu field named in field.
The allowed values for the
property are ‘ACTIVE’ or
‘VISIBLE’.
FullName() STRING Get the full name of the
gadget, e.g.'!!Form.bar'.
InsertAfter(STRING field, STRING NO RESULT Inserts a new barmenu field
dText, STRING menu) immediately after the one
identified by field.
The name of the menu is
given in menu; the DTEXT of
the new field is given by
dText.
InsertBefore(STRING field, NO RESULT Inserts a new barmenu field
STRING dText, STRING menu) immediately before the one
identified by field.
The name of the menu is
given in menu; the DTEXT of
the menu is given by dText.
Name() STRING Get the gadget's name, i.e.
'bar'
Owner() FORM Get the owning form.

© Copyright 1974 to current year. 2:26 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


SetActive( STRING dText, BOOLEAN NO RESULT Deactivate/Activate the
state) menu field whose DTEXT is
dText.
Using this method is
deprecated.
SetFieldProperty(STRING menu, NO RESULT Set the value of the property
STRING property, BOOLEAN state) named in property with the
value of state, for the menu
named in menu.
The allowed values for the
property are ‘ACTIVE’ or
‘VISIBLE’.
Shown() BOOLEAN Get shown status.
Type() STRING Get the GADGET type as a
STRING.

Table 2: 18. BAR Object Methods

Command
The BAR command creates a bar menu within a form definition.
The recommended way to create menu fields on the bar is to use the bar's Add() method.
bar
!this.bar.add ( 'Choose', 'Menu1')
!this.bar.add ( ' window', 'Window' )
!this.bar.add ( 'help', 'Help' )
Note: The use of the two special menu names ’Help’, which adds a system help menu that
calls the online help; and ‘Window’, which adds a system Window menu that lists all
the displayed windows.

© Copyright 1974 to current year. 2:27 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.6 BLOCK Object


This object holds expressions that are evaluated later.

Methods

Name Result Purpose


Block( STRING expression) BLOCK Creates a block expression.
Evaluate() ANY Evaluate block expression on
object: check result is of
TYPE type.
Evaluate() ANY Evaluate the expression and
return the result
Evaluate(STRING type) ANY Evaluate expression and
return an error if the result is
not of TYPE type. Otherwise
returns the result.

Table 2: 19. BLOCK Object Methods

2.5.7 BOOLEAN Object

Methods
None of these methods modifies the original object.

Name Result Purpose


BOOLEAN(REAL value) BOOLEAN Constructor that creates a
boolean Object set to a non-
zero value if boolean is
TRUE; 0 if boolean is FALSE
BOOLEAN(STRING value) BOOLEAN Constructor that creates a
boolean Object set to:
'TRUE’ if boolean is T, TR,
TRU, TRUE, Y, YE YES;
‘FALSE’ if boolean is F, FA,
FAL, FALS, FALSE, N, NO.
BOOLEAN( STRING value, FORMAT BOOLEAN As above. FORMAT
format) argument required for
consistency by Forms and
Menus.
AND() BOOLEAN TRUE if both values are
TRUE
NOT() BOOLEAN TRUE if FALSE; FALSE if
TRUE
OR(BOOLEAN value) BOOLEAN TRUE if either value is TRUE

© Copyright 1974 to current year. 2:28 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Real() REAL 1 if boolean is TRUE; 0 if
boolean is FALSE
String() STRING ‘TRUE’ if boolean is TRUE.
‘FALSE’ if boolean is FALSE.
Table 2: 20. BOOLEAN Object Methods

2.5.8 BORE Object

Member

Name Type Purpose


Size REAL The BORE size
Get/Set

Table 2: 21. BORE Object Members

Methods
None of these methods modifies the original object.

Name Result Purpose


BORE(REAL value) BOOLEAN Constructor that creates a
BORE object with the given
value.
BORE(STRING value) BOOLEAN Constructor that creates a
BORE object with the given
value.
BORE(STRING value, FORMAT BOOLEAN Constructor that creates a
format) BORE object with the given
value, and in the format
specified by format.
EQ(REAL value) BOOLEAN Comparison with the
argument value dependent
on current BORE units.
GEQ(BORE bore) BOOLEAN TRUE if this object is greater
than or equal to the
argument bore.
GEQ(REAL value) BOOLEAN Comparison with the
argument value dependent
on current BORE units.
GT(BORE bore) BOOLEAN TRUE if BORE greater than
BORE

© Copyright 1974 to current year. 2:29 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


GT(REAL value) BOOLEAN Comparison with the
argument value dependent
on current BORE units
LEQ(BORE bore) BOOLEAN TRUE if this object is less
than or equal to the
argument bore.
LEQ(REAL value) BOOLEAN Comparison with the
argument value dependent
on current BORE units
LT(BORE bore) BOOLEAN TRUE if this object is less
than bore.
LT(REAL value) BOOLEAN Comparison with the
argument value dependent
on current BORE units
Real() REAL Convert BORE to a REAL
value
String(FORMAT format) STRING Convert BORE to a STRING
using the settings in the
global format object.

Figure 2:18. BORE Object Methods

2.5.9 BUTTON Gadget

Members

Name Type Purpose


Background REAL Set or get Background
Set/Get Colour Number
Background STRING Set Background Colour
Set Only Name
Val BOOLEAN TRUE when the button is
pressed
FALSE when it is not

Table 2: 22. BUTTON Object Members

© Copyright 1974 to current year. 2:30 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


AddPixmap(STRING file1, STRING NO RESULT Adds pixmaps to be used for
file2, STRING file3 ) the unselected, selected and
AddPixmap(STRING file1, STRING inactive states. The last two
file2) are optional.
AddPixmap(STRING file )
FullName() STRING Get the full gadget name,
e.g.'!!Form.gadget'.
Name() STRING Get the gadget's name, e.g.
'gadget'.
Owner() FORM Get owning form.
SetPopup(MENU menu) NO RESULT Links the given menu with
the gadget as a popup.
RemovePopup(MENU menu) NO RESULT Removes the given popup
menu from the gadget.
GetPickedPopup() MENU Returns the name of the
menu picked from a popup.
Shown() BOOLEAN Get shown status.
SetFocus() NO RESULT Move keyboard focus to this
gadget.
Refresh() NO RESULT Refresh display of gadget.
Background() STRING Get Background Colour
Name.
Some gadgets do not
support this property in all
circumstances, e.g. gadgets
which are showing a pixmap.
Gadgets whose colour has
not been set explicitly, may
not have a colour with a
known colourname. In this
case an error is raised..
SetToolTip(STRING) NO RESULT Sets the text of the Tooltip.
Type() STRING Get the gadget-type as a
STRING.

Table 2: 23. BUTTON Object Methods

© Copyright 1974 to current year. 2:31 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Command
The BUTTON command defines a button, and specifies its position, tag or pixmap, callback
text and control attribute.
You can define the BUTTON to be either PML-controlled, or core-code controlled using the
gadget qualifier attribute control type, with values ‘PML” or “CORE”.
The files defining any pixmaps should be specified in the form's default constructor method
using the gadget's AddPixmap() method.
A Button type Linklabel provides a purely textual button presentation, often used to indicate
a link to some application item, e.g. a hyperlink to a file, a link to an associated form. An
Example of the Linklabel gadget is shown on the example form in Fold up Gadget Link
Example Form with Fold-up panels, NumericInput and Linklabel gadgets.
The tag text is shown in a different colour to all other gadget's tag text. The link label gadget
highlights by underlining when the mouse cursor passes over it. Pressing it causes a
SELECT event to be raised and runs any associated call back.

Note:

1. The Button has subtypes Normal, Toggle and Linklabel.


2. Linklabels are Buttons and so they do cause validation of any modified text fields of the
form whenever they are pressed.
3. Linklabels:
1. cannot have pixmaps assigned to them
2. don't support change of background colour
3. don't support 'pressed' and 'not pressed' value
4. are not enclosed in a box
5. can have popup menus (though this is not recommended)
6. don't have Control Types e.g. OK, CANCEL etc
4. The sub-type of a Button gadget can be queried using the Button's Subtype method.

© Copyright 1974 to current year. 2:32 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

.--------<-------.
/ |
>-BUTTON gname -+- LINKLabel -+-- tagtext -------|
| +-- <fgpos> -------|
| +-- CALLback text -|
| +-- TOOLTIP text --|
| +-- <fganch> ------|
| +-- <fgdock> ------|
| +-- CORE ---------* Core managed gadget
| | .------<-----.
| |/ |
| +- FORM fname -|
| +- <vshap> ----*
| |
| +- TOOLTIP text -.
| '----------------'-->
|
| .--------<----------.
+-- TOGGLE -./ |
'-----------+- tagtext -----------|
+- <fgpos> -----------|
+- CALLback text -----|
+- TOOLTIP text ------|
+- <fganch> ----------|
+- <fgdock> ----------|
+- CORE --------------| Core managed gadget
+- BACKGround <colno>-|
+- PIXMAP <vshap> ----*
| .------<-----.
|/ |
+- FORM fname -|
+- <vshap> ----*
|
+- OK -----.
+- APPLY --|
+- CANCEL -|
+- RESET --|
+- HELP ---|
'----------+- TOOLTIP text -.
'----------------'-->

Figure 2:19. Syntax Graph -: Creating a BUTTON Object

Note: It is bad practice to place one gadget on top of another. This may lead to gadgets
being obscured.

Defaults: If no tag is specified, the tag defaults to the gadget’s gname.


The control attribute is unset unless you specifically enter OK, APPLY, HELP,
CANCEL or RESET. The default values for anchoring and docking are DOCK
= none, and ANCHOR = Left + Top.

The Pixmaps associated with Button gadgets can be changed after the gadgets have been
displayed on a form.
Method syntax is:
AddPixmap( !pixmap1 is STRING )
AddPixmap( !pixmap1 is STRING, !pixmap2 is STRING )

© Copyright 1974 to current year. 2:33 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Where: !pixmap is a string holding the file pathname of the required .png file, e.g.
%pmllib%\png\camera.png
!pixmap1 shows the Un-selected state of the gadget, and pixmap2 shows the Selected
state.

Notes:
1. It is recommended that when you define the gadget you set its size to encompass the
largest pixmap which you will later add. Failure to do this may give rise to unexpected
behaviour.
2. Historically you could add a third pixmap which was used when the gadget was de-
activated. This practice is no longer necessary as the gadget pixmapped is
automatically greyed-out on de-activation.

2.5.10 COLLECTION Object


The collection object is used to extract database elements from the system using a selection
filter (an expression object), restrictive search elements and scope lists.

Methods

Name Result Purpose


Collection() Constructor (initialises all the
object settings).
Scope (COLLECTION) Empties the current scope
list and makes the passed
COLLECTION the current
scope.
Scope (DBREF) Empties the current scope
list and makes the passed
DBREF the current scope.
AddScope Adds the passed DBREF to
the current scope list.
Scope (DBREF ARRAY) Replaces the current scope
list with the passed list of
DBREFs.
AppendScope (DBREF ARRAY) Appends the passed list of
DBREFs to the scope list.
ClearScope() Empties the current scope
list.
Filter (EXPRESSION) Sets the filter to be applied to
the collection.
ClearFilter () Empties the filter to be
applied to the collection.
Type (STRING) Empties the current scope
type list and adds the passed
element type.

© Copyright 1974 to current year. 2:34 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


AddType(STRING) Adds the passed element
type to the scope type list.
ClearTypes() Empties the types to be
applied to the collection.
Types (ARRAY elements) Replaces the scope element
type list with the passed list,
elements.
AppendTypes (ARRAY types) Appends the passed list,
types, to the scope type list.
Initialise() Initialises an evaluate list, so
all query actions re-evaluate
the collection rules. Sets
index position to 1.
Filter() EXPRESSI Returns the expression used
ON to filter database elements.
Scope() DBREF Returns the list of database
ARRAY elements to scan.
Types() STRING Returns the list of database
ARRAY element types to be
collected.
Results() DBREF Returns the whole collection.
ARRAY
Next(REAL n) DBREF Returns sub array from
ARRAY collection of n elements
starting at current index
position.
Index() REAL Returns the current index of
the count being used by
Next().
Size () REAL Returns the number of
elements in the collection.

Table 2: 24. COLLECTION Object Methods

Note: Users can set the scope on a collection object to the whole MDB by not setting a
scope or by using the ClearScope( ) method.

2.5.11 COLUMN Object


The column object defines the way in which a column of a table object is populated.
The formatting of a column should be separate from the column definition itself and be held
within the report object used to extract data from a table object. This will allow the same
table to have many different reports produced from it, without the need to regenerate the
table.

© Copyright 1974 to current year. 2:35 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


Column() Constructor (initialises all the
object settings)
Column(EXPRESSION, BOOLEAN, Constructor setting
BOOLEAN, STRING) Expression, Sort, Ascending,
Key
Key (STRING) Sets key and forces it to be
uppercase
Expression (EXPRESSION) Defines the expression used
to populate the column
Sort() Switches on column sort
NoSort() Switches off column sort, this
is the default setting
Ascending() Sets column sort to
ascending order
Descending() Sets column sort to
descending order
Key() STRING Returns the key word for use
when reporting
Expression() EXPRESSI Returns the expression used
ON to derive the content of the
column
IsSorted() BOOLEAN Returns TRUE if the column
is sorted
SortType() STRING Returns the column sort
setting, ascending,
descending or off

Table 2: 25. COLUMN Object Methods

2.5.12 COLUMNFORMAT
The column object defines the way in which a column of a table object is populated.
The formatting of a column should be separate from the column definition itself and be held
within the report object used to extract data from a table object. This will allow the same
table to have many different reports produced from it, without the need to regenerate the
table.

© Copyright 1974 to current year. 2:36 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


ColumnFormat() Constructor (initialises all the
object settings)
Format(FORMAT) Sets the format of the column
to the passed format
Format(DATEFORMAT) Sets the format of the column
to the passed date format
FORMAT('STRING') Unsets the format of the
column, i.e. the column
Width (REAL) Sets the column width
Widest() Sets the maximum column
width flag, setting a specific
width value automatically
sets the flag to FALSE. Note
that this is the least efficient
method for Width because a
complete scan has to be
done to determine the
widest.
Indent(REAL, REAL) Sets left and right indents
(i.e. spaces) in the column
Format() FORMAT Returns the format for
numeric values in a column
Width() REAL Returns the column width,
strings greater than the
column width are wrapped on
to the next line, numeric
values greater than the
column width are output as a
column of hashes.
GetWidest() BOOLEAN Returns TRUE if “widest” is
set
Justification() STRING Returns the column
justification
LeftIndent() REAL Returns the left indent setting
RightIndent() REAL Returns the right indent
setting

Table 2: 26. COLUMNFORMAT Object Methods

© Copyright 1974 to current year. 2:37 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.13 COMBOBOX Gadget

Members

Name Type Purpose


Val REAL Get/ Selected option number.
Set
DText ARRAY OF Set or get the entire list of
STRING display texts.
Get/Set
DText[n] STRING Get Get the display text of the
Only n'th option.
RText ARRAY OF Set or get the list of
STRING replacement texts.
Get/Set
RText[n] STRING Get Get the replacement text of
Only the n'th option.
Editable BOOLEAN Controls editable status of
Get/Set the text display field
(ComboBox only)
Scroll INTEGER Controls the maximum length
Get/Set of a text string which can be
held and scrolled in the
display text field (ComboBox
only)
Count REAL Get count of number of fields
Get only in the list.
Val REAL Selected field as integer.
Get/Set Zero implies no selection.
Setting val to zero will cause
an error if ZeroSel is not
specified.

Table 2: 27. COMBOBOX Gadget Members

© Copyright 1974 to current year. 2:38 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


Add(STRING Dtext) NO RESULT Append an entry to the drop
down list, where Dtext is the
text to display in the option
list.
Add(STRING Dtext, STRING Rtext)) NO RESULT Append and entry to the drop
down list, where Dtext is the
text to display in the option
list, and Rtext is the
replacement text for the new
field. If Rtext isn’t specified, it
will be set to Dtext by
default.
Clear() NO RESULT Clear gadget’s contents.
ClearSelection() NO RESULT Clears selection and returns
to default of first in list.
FullName() STRING Get the full gadget name,
e.g.'!!Form.gadget'
Name() STRING Get the gadget's name, e.g.
'gadget'
Owner() FORM Get owning form.
Select(STRING text, STRING value NO RESULT Select specified item in a list:
) text must be ‘Rtext’ or
‘Dtext’, and value is the item
to be selected.
Selection() STRING Get current selection’s
RTEXT.
Selection(STRING text ) STRING Get RTEXT or DTEXT of
current selection; text must
be ‘Rtext’ or ‘Dtext’.
SetDisplayText( STRING text ) NO RESULT Set the display text field
value, if the gadget is
editable.
SetPopup(MENU menu) NO RESULT Links menu with the gadget
as a popup.
Refresh() NOT Refreshes the display of the
RESULT gadget.
SetFocus() NO RESULT Move keyboard focus to this
gadget.
RemovePopup(MENU menu) NO RESULT Removes (popup) menu
from the gadget.

© Copyright 1974 to current year. 2:39 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


GetPickedPopup() MENU Returns the last picked
popup menu for the gadget.
Shown() BOOLEAN Get ‘shown’ status.
Type() STRING Get the gadget type as a
string.
Background() STRING Get Background Colour
Name.
Some gadgets do not
support this property in all
circumstances, e.g. gadgets
which are showing a pixmap.
Gadgets whose colour has
not been set explicitly, may
not have a colour with a
known colourname. In this
case an error is raised..
DisplayText( ) STRING Gets the text string currently
displayed in the Option
gadget's display field.
SetPopup( !menu ) NO RESULT Assigns a menu object as the
gadget's current popup.
Clear( !dtext ) NO RESULT Delete the field with the given
DTEXT string.
Clear( !fieldNumber ) NO RESULT Delete the specified field
number.

Table 2: 28. COMBOBOX Gadget Methods

Command
.-------<-------.
/ |
>-- COMBObox gname -+- <fgtagw> ------|
+- <fgpos> -------|
+- <fganch> ------|
+- <fgdock> ------|
+- CALLback text -|
+- TOOLTIP text --|
+- NORESELect ----|
+- ZEROSELection -|
+- CORE ----------* Core managed gadget
| .-------<-------.
|/ |
+- SCRoll int ----|
+- <vwid> --------*
|
+- TOOLTIP text -.
'----------------'-->

When the ComboBox is editable, with the drop-down list closed, the user can search for a
required option by typing the first few letters into the display field and clicking the down-

© Copyright 1974 to current year. 2:40 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

arrow. The list will open with the first matching option highlighted. This is useful for large
lists.

Behaviour
The COMBOBOX command is a combination of an option list and an editable text display
field similar to a windows combobox. It shares most of the properties and methods of the
Option gadget.
Combo gadget has editable display text field (default) and so supports scroll width.
Combobox does not support display of pixmaps.

Note: It is bad practice to place one gadget on top of another. This may lead to gadgets
being obscured.

Unselected Events
Option gadgets support UNSELECT events. Typically when a field in the dropdown list is
selected, an UNSELECT event is raised for the previously selected field (if any) and then a
SELECT event is raised for the new field.

Notes:
1. UNSELECT events are not notified to PML unless an open callback has been specified
(so that SELECT and UNSELECT events can be differentiated).
2. Typically the UNSELECT action allows Appware to manage consequences of
deselection for any dependent gadgets or forms.
3. We recommend that you do not change the option gadget's selection programmatically
in an UNSELECT event.

Text Entry and Editing


When the editable property is set (default), the display field is accessible to the user, who
can edit the contents by typing at the keyboard or pasting text into the field. If the user
presses the ENTER key while the gadget's text field has focus and contains some
characters, a VALIDATE event is raised. You can trap this event by assigning a PML Open
callback to the gadget. This callback allows you to give meaning to the action of typing text
into the display field.
The Open callback is necessary to differentiate the VALIDATE event from the SELECT and
UNSELECT events.
On receipt of the VALIDATE event, your callback method can retrieve the displayed text by
means of the DisplayText method and decide what action is associated.
Additionally you can assign a popup menu to the gadget, which gives the user the choice of
several actions.

© Copyright 1974 to current year. 2:41 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.14 CONTAINER Gadget

Members

Member Name Type Purpose

type STRING Get/Set Gadget type as string 'Container'.

control REAL Get/Set Integer handle of external control.

popup MENU Get/Set Popup menu associated with the control.

Methods

Method Name Result Purpose

ShowPopup(!x is NO RESULT Show the associated popup at the specified


REAL, !y is REAL ) position. Position is the integer pixel position
within the enclosed control.

FullName( ) STRING Get the full gadget name, i.e. !!Form.gadget.

Name( ) STRING Get the gadget's name

Owner( ) FORM Get owning form

GetPickedPopup( ) MENU Returns the last picked popup menu for the
gadget.

Shown( ) BOOLEAN Get 'shown' status.

Command
The Container gadget allows the hosting of an external Control, e.g. a PMLNet, control
inside a PML defined form. It allows the user to add an external .Net control, which may
raise events that can be handled by PML. In order to customise the context menus of the
.Net control, the Container may have a PML popup menu assigned to it. This is shown when
the .Net control raises a 'popup' event.
.--<-----.
/ |
>---- CONTAINER gname -+- NOBOX ---|
+- INDENT --*
|
'- PMLNET/CONTROL -+- handle -.
'----------|
.----<------------------------*
|
| .----<-----------------.
|/ |
+-- tagtext -------------|
+-- <fgpos> -------------|
+-- <fganch> ------------|
+-- <fgdock> ------------*
|

© Copyright 1974 to current year. 2:42 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

+-- <vshape> -.
'-------------'-->

Notes:
1. By default the Container will be enclosed in a box, but you can select NOBOX or
INDENT.
2. Only PMLNet controls are supported.
3. 'handle' is the integer token identifying the control.
4. Positioning must be specified before size (<vshape>).
5. Dock and Anchor are supported to allow intelligent resize behaviour. The enclosed
control must support resizing and is usually set as Dock fill, so that it follows size
changes of the Container.

2.5.15 DATEFORMAT Object


The DATEFORMAT object is used to allow date attributes to be sorted in date order.
Examples:

!format = object DATEFORMAT(T D/M/Y’)


!format.month(‘INTEGER’)
!format.year(2) $ 12:10 05/01/01

!format = object DATEFORMAT(‘T D M Y’)


!format .month(‘BRIEF’) $ 12:10 05 Nov 01

!format = object DATEFORMAT (‘D M’)


!format.year(4)
!format.month(‘FULL) $ 5 November 2001

© Copyright 1974 to current year. 2:43 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


DateFormat(STRING format) Constructor. Defines a format.
The input string, format, is in the
form 'T*D*M*Y', where T = time,
D = day, M = month, Y = year,
and the order of the letters
indicate the format required.
T and D are optional. H could be
used if only hours are required.
* is the separator character.
DateFormat() Sets default format (‘T M D Y’,
month = ‘INTEGER’, year = 2)
Month(STRING) Sets month format. 'INTEGER',
'BRIEF' or 'FULL'
Year(INT) Sets year format. 2 or 4 for
number of digits
String(DATETIME) STRING Input a date in DATETIME
format and convert to the
specified format.
String(STRING) STRING Input a date in PDMS format and
convert to the specified format.

Table 2: 29. DATEFORMAT Object Methods

2.5.16 DATETIME Object

Methods

Name Result Purpose


DateTime() DATETIME Create a DATETIME object
with current date and time in
it.
DateTime(REAL year, REAL month, DATETIME Create a DATETIME set to
REAL date) the given year, month, date.
Time defaults to 00:00:00.
DateTime(REAL year, DATETIME As above, but month is a
STRING month. STRING at least three
REAL date) characters long representing
month e.g. ‘Jan’, ‘March’,
‘DECEM’

© Copyright 1974 to current year. 2:44 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


DateTime(REAL year, REAL month, DATETIME Create a DATETIME object
REAL date, set to given year, month,
REAL hour,REAL minute) date, hour, minute. Seconds
default to 0.
DateTime(REAL year, DATETIME As above, but month is a
STRING month, REAL date, REAL STRING at least three
hour, REAL minute) characters long representing
month e.g. ‘Jan’, ‘March’,
‘DECEM’
DateTime(REAL year, REAL month, DATETIME Create a DATETIME object
REAL date, REAL hour, REAL set to given year, month,
minute, REAL second) date, hour, minute, second.
DateTime(REAL year, STRING DATETIME As above, but month is a
month, REAL date, REAL hour, STRING at least three
REAL minute, characters long representing
REAL second)
month e.g. ‘Jan’, ‘March’,
‘DECEM’
Date() REAL Return day of month for this
DATETIME object (1-31).
GEQ(DATETIME) BOOLEAN Test whether this DATETIME
is later than or the same as
argument DATETIME.
GT(DATETIME) BOOLEAN Test whether this date is
later than argument
DATETIME.
HOUR() REAL Return hour as REAL for this
DATETIME object (0-23).
LEQ(DATETIME) BOOLEAN Test whether this DATETIME
is earlier or the same as
argument DATETIME
LT(DATETIME) BOOLEAN Test whether this DATETIME
is earlier than argument
DATETIME.
Minute() REAL Return minutes as REAL for
this DATETIME object (0-
59).
Month() REAL Return month as REAL for
this DATETIME object (1-
12).
MonthString() STRING Return month as STRING
for this DATETIME object
(‘January’, ’February’, etc.)

© Copyright 1974 to current year. 2:45 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Second() REAL Return number of seconds
as REAL for this DATETIME
object (0-59).
Year() REAL Return year as REAL
(e.g. 1998)

Table 2: 30. DATETIME Object Methods

2.5.17 DB Object

Members

Name Type Purpose


Name STRING The name of the database,
up to 32 characters.
Description STRING The database description, up
to 120 characters.
Access STRING Access type (UPDATE,
MULTIWRITE,
CONTROLLED).
Claim STRING Claim mode for multi-write
databases (EXPLICIT,
IMPLICIT).
File STRING Database filename, up to 17
characters.
Foreign STRING FOREIGN or LOCAL
Number STRING Database number
Team TEAM Owning Team
Type STRING Database type, e.g. DESI
Refno STRING String containing Database
reference number
Primary STRING Identifies whether a
database is PRIMARY or
SECONDARY at the current
location in a global project

Table 2: 31. DB Object Members

© Copyright 1974 to current year. 2:46 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


MDBList() ARRAY List of MDBS which contain
this DB.
Size() REAL File size in pages.
Sessions() ARRAY OF All sessions of the current
DBSESS database.
Lastsession() DBSESS Last session information for
database.
DB(DBREF) DB Returns a DB object, given a
DBREF.
DB(STRING) DB Returns a DB object, given a
name or reference number.

Table 2: 32. DB Object Methods

These methods may be used in the following ways (in all cases !!CE is assumed to be a DB
DATABASE element and !!CE.Name is a STRING object containing the element’s name).
Examples:

!D = OBJECT DB(!!CE)
!D = OBJECT DB(!!CE.Name)
!D = !!CE.DB()
!D = !!CE.Name.DB()

These methods should assist performance improvements to appware by making it easier to


get from Database element to Object.

Command

!ARRAY = DBS $ Returns an array of the DBs in the current project

© Copyright 1974 to current year. 2:47 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.18 DBREF Object

Methods

Name Result Purpose


Dbref( STRING ) DBREF Creates a DBREF object with
value set to the given
STRING.
Dbref( STRING, FORMAT ) DBREF As above. FORMAT
argument required for
consistency by Forms and
Menus.
Attribute(STRING Name) ANY Return the value of the
named Attribute
Attributes() ARRAY OF A DBREF appears to have
STRING the attributes of whatever DB
elements it is pointing to
BadRef() BOOLEAN TRUE if DBREF is not valid
(cannot navigate to it)
Delete() NO RESULT Deletes the PML DBREF
(not the database element it
is pointing to)
MCount() REAL Count of number of members
of element referenced
MCount(STRING type) REAL Count of number of members
of element referenced of type
specified
String(FORMAT) STRING Convert to STRING using
settings in global FORMAT
object
Line([CUT/UNCUT]) LINE Returns the cut/uncut pline of
a SCTN/GENSEC element
as a bounded line
PPosition(REAL) POSITION Returns the position of the
specified Ppoint of a
database element.
PDirection(REAL) DIRECTION Returns the direction of the
specified Ppoint of a
database element.

Table 2: 33. DB Object Methods

© Copyright 1974 to current year. 2:48 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.19 DBSESS Object

Members

Name Result Purpose


Number REAL Session number
Date STRING Date when session started
Author STRING Creator of session
Comment STRING Session comment

Table 2: 34. DBSESS Object Members

2.5.20 DIRECTION Object


The direction object is a 3D vector defined in the frame of reference of either the world, or a
database element.

Members

Name Type Purpose


East REAL EAST or X component
Get/Set direction vector in frame of
reference of the Origin
element
North REAL NORTH or Y component
Get/Set direction vector in frame of
reference of the Origin
element
Up REAL UP or Z component direction
Get/Set vector in frame of reference
of the Origin element
Origin DBREF DB element that is the origin
Get/Set and which defines the frame
of reference DIRECTION

Table 2: 35. DIRECTION Object Members

Methods
None of these methods modifies the original object.

© Copyright 1974 to current year. 2:49 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Direction( STRING ) DIRECTION Creates a DIRECTION with
the value given by STRING.
Direction( STRING, FORMAT ) DIRECTION Creates a DIRECTION with
the value given by STRING,
in the format specified.
EQ(DIRECTION) BOOLEAN TRUE if two directions are
the same
LT(DIRECTION) BOOLEAN TRUE if direction is less than
argument
String(FORMAT) STRING Convert to STRING
WRT(DBREF) DIRECTION Convert to a new
DIRECTION with respect to
a given element.
Angle(DIRECTION) REAL Returns the angle between
the two directions
Bisect(DIRECTION) DIRECTION Returns the direction which
is half way between the two
directions
Cross(DIRECTION) DIRECTION Returns the cross product of
the two directions
Dot(DIRECTION) REAL Returns the dot product of
the two directions
IsParallel(DIRECTION) BOOLEAN Returns true if the supplied
directions are parallel, false
otherwise.
IsParallel(DIRECTION, REAL) BOOLEAN Returns true if the supplied
directions are parallel
according to tolerance
supplied, false otherwise.
Opposite() DIRECTION Returns the opposite
direction
Orthogonal(DIRECTION) DIRECTION Returns the direction
orthogonal between the two
directions
Projected(PLANE) DIRECTION Returns a direction projected
onto the passed plane.

© Copyright 1974 to current year. 2:50 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


IsPerpendicular(DIRECTION) BOOLEAN Returns true if the supplied
directions are perpendicular,
false otherwise.
IsPerpendicular(DIRECTION, REAL) BOOLEAN Returns true if the supplied
directions are perpendicular
according to tolerance
supplied, false otherwise.

Table 2: 36. DIRECTION Object Methods

2.5.21 EXPRESSION Object


This object is used to define a basic expression that can be applied against a database
element or another object and return any data typed result, BOOLEAN, STRING, etc.
EXPRESSION objects may be used by COLLECTION objects to filter the results of the
collection.

Methods

Name Result Purpose


Expression Constructor (initialises all the
object’s settings).
Expression (STRING) Constructs and defines the
expression. ('ATTRIBUTE----
') should be used for
attributes for speed and
efficiency. Other examples
are ('PURP eq IPIPINGI') or
('XLEN + STRING(XLEN)').
AttributeExpression (STRING) Makes the passed attribute
an expression.
AttributeExpression
('LENGTH') is the same as
Expression ('ATTRIBUTE
LENGTH').
String() STRING Returns the current
expression as a string.
Evaluate(DBREF) ANY Evaluates the current
expression against the
passed object

Table 2: 37. EXPRESSION Object Methods

© Copyright 1974 to current year. 2:51 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.22 FILE Object

Methods

Name Result Purpose

File(STRING) FILE Create a FILE object on a file


whose name is given in
STRING.

AccessMode() STRING Return access mode for the


file {‘CLOSED’, ‘READ’,
‘WRITE’, ‘OVERWRITE’,
‘APPEND}.

Close() NO RESULT Close file if open.

Copy(STRING) FILE Copies the file whose


pathname is given in
STRING. Returns FILE
object for copied file.

Copy(FILE) FILE Copies the file represented


by the FILE object. Returns
FILE object for copied file.

DeleteFile() NO RESULT Delete the file represented


by the file object if it exists.

Directory() FILE Returns a FILE object


corresponding to owning
directory.

DTM() DATETIME Returns a DATETIME object


holding the date and time
that this file was last
modified.

Entry() STRING Returns file name as string.

Exists() BOOLEAN Returns BOOLEAN


indicating whether file exists
or not.

Files() ARRAY OF Returns an ARRAY of FILE


FILES objects corresponding to files
owned by this directory.

FullName() STRING Returns the name including


path for this FILE object as a
STRING.

IsOpen() BOOLEAN Return BOOLEAN indicating


whether file is open or not.

© Copyright 1974 to current year. 2:52 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose

LineNumber() REAL Return line number of line


about to be written.

Move(STRING) FILE Move this file to location


given in STRING. Return
FILE object for moved file.

Move(FILE) FILE Move this file to location


represented by FILE object.

Name() STRING Return name of this FILE


object as STRING.

Open(STRING) NO RESULT Opens this file in the mode


given by STRING
{‘READ’,’WRITE’,’OVERWRI
TE’, ‘APPEND’}

Owner() STRING Returns the ID of this FILES


owner a STRING.

Path() ARRAY OF Returns an ARRAY of FILEs


FILES corresponding to the owning
directories of this FILE
object.

PathName() STRING Returns owning path as a


STRING.

ReadFile() ARRAY OF Open, read contents and


STRING close file. Data returned as
an ARRAY of STRINGs
corresponding to the lines in
the file.

ReadFile(REAL) ARRAY OF As above, but ensures that


STRING file is no longer than number
of lines given in REAL.

ReadRecord() STRING Reads a line from an open


file and returns it in a
STRING. Returns an UNSET
STRING if end of file is
detected.

Set() BOOLEAN Returns a BOOLEAN


indicating whether this FILE
object has a name set or not.

Size() REAL Returns size of file in bytes.

SubDirs() ARRAY OF Returns an ARRAY of FILE


FILE objects corresponding to
directories owned by this
directory.

© Copyright 1974 to current year. 2:53 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose

Type() STRING Returns a STRING indicating


whether this object
represents a ‘FILE’ or a
‘DIRECTORY’.

WriteFile(STRING, ARRAY OF NO RESULT Opens file in mode given in


STRING) string {‘WRITE’,
’OVERWRITE’, ’APPEND’},
writes STRINGs in ARRAY
and closes file.

WriteRecord(STRING) NO RESULT Writes STRING to this FILE


which must already be open.

Table 2: 38. FILE Object Methods

2.5.23 FMSYS Object

Methods
None of these methods modifies the original object.

Name Result Purpose


Checkrefs BOOLEAN By default, all references in a
Form definition are checked
when a form is displayed.
Checking can be switched
off, which may be
recommended if
performance problems are
experienced.
CurrentDocument() FORM This method returns the
current Document of the
application framework as a
FORM object. If there is no
current document then the
returned form has value
Unset.

© Copyright 1974 to current year. 2:54 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


DefaultFormat() FORMAT Query the system default
format object for use by
typed text gadgets. If none
defined then returns an
Unset local variable.
The returned format object is
a copy, so changing it will not
affect the system default
format. However the user
can apply it to variables e.g
!text=!myVar.String(!!fmsys.d
efaultFormat())
DefaultFormLayout( ) STRING query the current default
form layout mode
DocsAtMaxScreen(BOOLEAN) NO RESULT Sets default placement
position for document forms
to be towards the maximum
(rightmost) of the screen.
Useful for wide screen ad
twin screen devices.
FMINFO() ARRAY OF Returns array of all FMINFO
STRINGS strings.
HelpFileAlias() STRING returns the current help file’s
alias.
Interrupt() BOOLEAN Set to TRUE if the interrupt
gadget has been selected.
LoadForm(STRING formname) FORM Allows force loading of a
form definition and/or the
ability to get a reference to a
form object by name.
If the form exists then a
reference to the form object
is returned. If it doesn’t exist,
then an attempt is made to
force load its definition. If this
fails then an unset form
reference is returned.
Main() FORM Query the current main form
OKCurfnView(!viewtype is STRING) BOOLEAN Queries whether graphical
views of the specified view
type are displayed. Graphical
view types supported are:
‘G2D’; ‘G3D’; ‘ANY’ and any
view subtype is implied.

© Copyright 1974 to current year. 2:55 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


OKCurfnView(!viewtype is STRING, BOOLEAN Queries whether graphical
subtype is STRING ) views of the specified view
type and subtype are
displayed. Graphical view
types supported are: ‘G2D’;
‘G3D’; ‘ANY’. View subtypes
supported are: ‘ANY’ and for
G2D: ‘NORMAL’ (Draft);
‘PLOT’; ‘ISOSPOOL’
G3D: ‘NORMAL’ (Design)
Progress( ) REAL Get the current Integer value
in percent shown by the
progress bar, in the range 0
to 100. Zero means the bars
is invisible
Refresh() NO RESULT Refresh all VIEW gadgets
SetDefaultFormat(!!fmt is NO RESULT Provide a default global
FORMAT) format object to be used if no
specific format is defined for
any typed text field. Once
only call, users cannot
change it. !!fmt must be a
global variable.
SetDefaultFormLayout ( STRING NONE Set the default form layout
) mode to 'VARCHARS' or
'FIXCHARS'.
SetHelpFileAlias (alias is NONE establishes the application
string) help file from its alias.
SetInterrupt(GADGET) NO RESULT Sets the Gadget which will
interrupt macro or function
processing.
SetMain(FORM) FORM Sets the main form for an
Application.
SetProgress( !percent) NO RESULT Set the Integer value in
percent to be displayed in the
progress bar. Values will be
forced into the range 0 to
100. Resultant value of 0 will
cause the bar to become
invisible.
Splashscreen(BOOLEAN) NO RESULT Removes the display of a
splash screen after an
abnormal exit.
Table 2: 39. FMSYS Object Methods

© Copyright 1974 to current year. 2:56 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.24 FORM Object

Members

Name Type Purpose


FormRevision STRING Get/ Form Revision text.
Set
FormTitle STRING Get/ Form title.
Set
IconTitle STRING Get/ Icon title.
Set
Initcall STRING Get/ Callback executed when form
Set is initialised.
Autocall STRING Get/ Callback executed when any
Set of the specified application
attributes have changed.
Okcall STRING Get/ Callback executed when OK
Set button is pressed.
Cancelcall STRING Get/ Callback executed when
Set CANCEL button is pressed.
KeyboardFocus GADGET Gadget to have initial
Get/Set keyboard focus on display of
the form. One of TEXTFIELD,
TEXTPANE, BUTTON,
TOGGLE or ALPHA VIEW.
AutoScroll BOOLEAN If AutoScroll is selected the
Get/Set form will automatically gain
horizontal or vertical
scrollbars if the forms size
becomes too small to display
its defined contents. This
member does not apply to
form types Main Window and
Document.

© Copyright 1974 to current year. 2:57 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Type Purpose


Quitcall STRING Get/ Callback executed whenever
Set the user presses the Quit/
Close icon (X) on the title bar
of forms and the main
application window.
For forms of type MAIN, the
QUITCALL callback is
executed, if present. This
permits the user to terminate
the application, and so the
associated PML callback
should prompt the user for
confirmation.
For all other form types, the
QUITCALL callback is
executed, if present, and then
the form and its children are
hidden unless the PML
callback returns an error.
When the form nest is hidden
the CANCELCALL callback for
each form of the nest is
executed (in reverse display
order).
Maximised BOOLEAN Get/set form’s maximised
Get/Set status (on screen).
Active BOOLEAN Gives form's active/inactive
Get Only status.
Popup MENU Get/set form’s current popup
Get/Set menu.
HelpContextID STRING Read/Write STRING
Property:!!myform.HelpConte
xtID = STRING - sets the
context Id within the help file
for this form.
STRING=!!myform.HelpCont
extID - gets the current
context Id for this form.

© Copyright 1974 to current year. 2:58 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Type Purpose


Killingcall STRING Notify the form that it is being
destroyed and allow the
Get/Set
assigned callback method to
destroy any associated
resources, e.g. global PML
objects which would
otherwise not be destroyed
(see Killing callback).
FirstShowncall STRING Allow the user to carry out
any form actions which can
Get/Set
only be completed when the
form is actually displayed for
the first time (see FirstShown
callback).
Table 2: 40. FORM Object Members

Methods

Name Result Purpose


Name() STRING Get name.
FullName() STRING Get the full form name
(Including !!).
NewMenu(STRING menuname) MENU Adds a new named menu to
the form.
NewMenu(STRING menuname, STRING MENU Adds a new named and
type) typed menu to the form. The
first argument is the name of
the new menu; the second
argument is the type of the
menu, and must be either
‘POPUP’ or ‘MAIN’.
SetActive(BOOLEAN) NO RESULT SetActive(FALSE) greys-
out all gadgets on the form,
but doesn’t set their Active
status, so that
SetActive(TRUE) restores
the form to the precise state
it was in before greying out,
i.e. any inactive gadgets will
still be inactive.

© Copyright 1974 to current year. 2:59 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


SetGadgetsActive(BOOLEAN) NO RESULT SetGadgetsActive(FALS
E) greys out all gadgets on
the form and sets their Active
status to ‘inactive’, i.e. their
previous active state is lost.
Similarly
SetGadgetsActive(TRUE)
greys-in all gadgets and sets
their Active status to ‘active’.
SetPopup(MENU) NO RESULT Specifies the pop-up to be
displayed when the right-
hand mouse button is
released over the form
background.
RemovePopup(MENU) NO RESULT Removes a pop-up
associated with a form.
GetPickedPopup() MENU Returns the last picked
popup menu for the form.
Show('FREE') NO RESULT Show the form on the screen
as a FREE form.
Show('AT', REAL X, REAL Y) NO RESULT Show the form as a FREE
form with the origin at the
X,Y relative screen position.
Show('CEN', REAL X, REAL Y) NO RESULT Show the form as a FREE
form with its centre at the X,Y
relative screen position.
Shown() BOOLEAN Get 'shown' status
Hide() NO RESULT Hides the form (removes it
from the screen)
Owner() FORM Returns the form's parent
form, or unset variable if the
form is free-standing
SetOpacity( REAL PERCENT ) NONE Set the percentage
opaqueness of the form as
an integer in the range 10
(nearly transparent) to 100
(opaque - default). This is
only valid for non-docking
Dialog and BlockingDialog
form types.
Subtype( ) STRING Gets the form's subtype, one
of 'DIALOG',
'BLOCKINGDIALOG',
'MAIN', 'DOCUMENT'

© Copyright 1974 to current year. 2:60 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


SetUndoable( ) STRING,
ANY
Undoable( ) STRING

Table 2: 41. FORM Object Methods

Note: SetActive()and SetGadgetsActive()can be used in combination with each


other and with the Active property of individual gadgets.

Commands

SETUP FORM
A form definition is introduced by the SETUP FORM command and terminated by a
corresponding EXIT command. Once in Form Setup mode you can call any commands for
defining the form’s properties, creating a menu bar (see BAR object), main and popup
menus (see MENU object) and any gadgets which it is to own.
Once-only form attributes are entered as part of the SETUP FORM command line;
modifiable attributes are entered as contents of the form.
You can define the FORM to be either PML-controlled, or core-code controlled using the
qualifier attribute control type, with values ‘PML” or “CORE”.

VARCHARS and FIXCHARS


Two layout modes are supported, namely VarChars and FixChars.
VarChars is a new layout mode, based on measuring precise string widths. It is better
suited to the use of variably spaced fonts, and removes the need for most uses of the
TagWidth specifier. The benefits of using VarChars are:
It tends to produce smaller, more pleasing forms, without unwanted space.
No text wrap-around, except possibly in conjunction with TagWidth.
No truncation of explicitly defined text except possibly in conjunction with TagWidth.
The recommended layout mode for all new forms is:
setup form !!formname . . . VarChars
FixChars is the old layout mode (prior to PDMS12.1), which is based on the use of notional
character width to calculate the (approx.) sizes of textual gadgets and gadget tags.
Because the calculated sizes are only approximate, the user has to make frequent use of
the gadget's Width specifier and TagWidth specifier and considerable trial and error to
achieve a desired layout.
The default layout mode for setup form is FixChars, because this will be the least
disruptive for existing user Appware, so FixChars mode will currently result from either of
setup form !!formname . . .
setup form !!formname . . . FixChars
See the FMSYS Object method
!!FMSYS.SetDefaultFormLayout(layout is STRING)

© Copyright 1974 to current year. 2:61 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

that allows users to change the default layout mode for Setup form. This can be used to help
test any existing appware which is using setup form !!formname . . ., in either mode to
determine which forms need layout adjustment.

NOALIGN
The gadgets BUTTON, TOGGLE, TEXT, OPTION, single line PARGRAPH fit within 1
vertical grid unit and are by default drawn with their Y-coordinate adjusted so that they would
approximately centre-align with an adjacent BUTTON. This pseudo-alignment introduces
small errors in all but a few circumstances and prevents accurate controlled layout.
NOALIGN prevents this (historical) gadget auto-alignment.
Use NOALIGN in conjunction with PATH RIGHT (the default path) and HALIGN CENTRE,
as it gives a better layout, with fewer surprises.

Note: It is bad practice to place one gadget on top of another. This may lead to gadgets
being obscured.
The commands to set modifiable attributes are described after the syntax graph.

.---------------<---------------------------.
/ |
>--SETUP FORM fname --+-- MAIN -----+-------------------------------|
+-- DOCUMENT -+- FLOAT -----------------------|
| ‘-------------------------------|
+-- DIALOG ---+- DOCKing -+-------------------|
| |- Left ---. |
| | |- Right --| |
| | |- Top ----| |
| | ‘- Bottom -‘--------|
| |- RESIzeable ------------------|
| ‘-------------------------------|
+-- BLOCKingdialog -+- RESIzeable ------------|
| ‘-------------------------|
+-- VARCHARS ---------------------------------|
+-- FIXCHARS ---------------------------------|
+-- AT <xypos> -------------------------------|
+-- SIZE val val -----------------------------|
+-- NOQUIT -----------------------------------|
+-- NOALIGN ----------------------------------|
+-- CORE -------------------------------------*
| .---<------.
|/ |
+-- <form> --* form contents
‘—EXIT -->

Default: Dialog, non-resizeable; size adjusted automatically to fit contents.

© Copyright 1974 to current year. 2:62 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

TITLE
Defines the form title.

>-- TITLe text -->

CANCELCALL
This command defines the callback string which is executed whenever the form is
dismissed from the screen via the CANCEL button or the QUIT/CLOSE control on the
window title bar.

>-- CANCELcall text -->

Note: This command overrides the callback string on the CANCEL button.

CURSORTYPE
When a screen cursor enters a view, the view gadget determines what cursor type should
be displayed initially, and what type will be displayed during different types of graphical
interaction. You can specify the initial setting for the cursor type using this command.

Note: You cannot specify an initial cursor type for VOLUME views.

>-- CURSortype --+-- POINTER ----.


+-- NOCURSOR ---|
+-- PICK -------|
+-- PICKPLUS ---|
‘-- CROSSHAIR --‘-->

Note: There are other cursor types that are for AVEVA’s use only.

ICONTITLE
Defines the title for the icon when the form is minimised.

>-- ICONTItle text -->

INITCALL
Defines the callback string that is executed each time the form is displayed. This callback is
usually run to check the validity of showing the form and to initialise gadget values.

>-- INITcall text -->

© Copyright 1974 to current year. 2:63 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

OKCALL
Defines the OK callback string for a form. It is executed whenever the form is dismissed
from the screen via its OK button or that of an ancestor.

>-- OKcall text -->

Note: This command overrides the callback string on the OK button.

PATH
Defines the direction in which a sequence of new gadgets is to be added to a form. The path
setting remains until you give another PATH command. Used with HALIGN, HDISTANCE,
VALIGN, VDISTANCE.

>-- PATH --+-- Up ------.


+-- Down ----|
+-- Left ----|
‘-- Right ---‘-->

Defaults: Path right, Hdist 1.0, Valign top, Vdist 0.25, Halign left

HALIGN
Works in conjunction with PATH and HDISTANCE. Defines how a newly added gadget
should be aligned horizontally with the preceding gadget.

>-- HAlign --+-- Left ----.


+-- Centre --|
‘-- Right ---‘-->

HDISTANCE
Works in conjunction with PATH and HALIGN. Defines how a newly added gadget should be
spaced horizontally with respect to the preceding gadget.

>-- HDistance value -->

© Copyright 1974 to current year. 2:64 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

VALIGN
Use in conjunction with PATH and VDISTANCE. Defines how a newly added gadget should
be aligned vertically with the preceding gadget.

>-- VAlign --+-- Top -----.


+-- Centre --|
‘-- Bottom --‘-->

VDISTANCE
Works in conjunction with PATH and VALIGN. Defines how a newly added gadget should be
spaced vertically with respect to the preceding gadget.

>-- VDistance value -->

FirstShown and Killing Events


The following actions determine the life of a form:

Define the form, its gadgets, methods and layout are specified (usually in a
'.pmlfrm' file)

Load the form definition is read by PML and the form's constructor method is
run

Show the form's INITialisation event is raised, and the display process is begun

Activate the form and its contents is created by the window management system
and is activated (actually displayed) and the FIRSTSHOWN event is
raised

Hide the form is hidden and its OK or CANCEL event is raised

Kill the form's KILLING event is raised and then the form is destroyed. It is no
longer known to PML

Notes:
1. Load, Activate and Kill only happen once in the life of a form
2. Show and Hide may happen repeatedly
3. The form's Constructor is run once only
4. The FirstShown event only happens once
5. INIT is raised for every Show
The PML user can define callbacks to service any or all of the above events. These will
typically be open callbacks supported by form methods. They can be assigned within the
form's Constructor method (recommended), or within the form's Setup Form . . . Exit block.

FIRSTSHOWN callback
Typically assigned in the Constructor by

© Copyright 1974 to current year. 2:65 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

!this.FirstShownCall = '!this.<form_method>'
The purpose is to allow the user to carry out any form actions which can only be completed
when the form is actually displayed. There are a variety of circumstances where this arises
and it is often difficult to find a reliable solution. A couple of examples are given below.
Commands which manipulate form, menu or gadget visual properties, executed from a PML
macro, function or callback may not happen until control is returned to the window
manager's event loop. For example, in the application's start-up macro the command
sequence show !!myForm … hide !!myform will result in the form not being displayed, but
also not becoming known at all to the window manager. Attempts to communicate with this
form via the External callback mechanism (possibly from another process) will not work.
This can be rectified by doing the '!this.hide()' within the FIRSTSHOWN callback, because
the form will be guaranteed to be actually displayed (and hence known to the window
manager), before it is hidden.
It is sometimes difficult to achieve the correct gadget background colour setting the first time
the form is displayed. This can be resolved by setting the required colour in the
FIRSTSHOWN callback.

KILLING callback
Typically assigned in the Constructor by
!this.KillingCall = '!this.<form_method>'
The purpose is to notify the form that it is being destroyed and allow the assigned callback
method to destroy any associated resources, e.g. global PML objects which would
otherwise not be destroyed. This may be necessary because PML global objects will survive
an application module switch, but may not be valid in the new module.

Notes:
1. The callback method MUST NOT carry out any modifications to the Gadgets belonging
to the form or to the Form itself (e.g. don't show or hide the form). Attempts to edit the
form or its gadgets may cause unwanted side effects or possible system errors.
2. Form callbacks designed for other Form events (e.g. CANCEL, INIT) are rarely suitable
as killing callbacks.
3. Restrict form and gadget operations to querying.

2.5.25 FORMAT Object


The format object is used to format the output of real objects and especially real physical
objects such as distances. It controls precision, units, conversions and unit qualifiers.
Format objects are also used to control conversions of strings to reals by providing guidance
on dimensions and units. This occurs for text boxes in the user interface, and also for real to
string and string to real conversion methods.

© Copyright 1974 to current year. 2:66 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Members

Name Type Purpose


CompSeparator STRING | | Separator used for multi-
component data types such as
POSITIONS (Default SPACE).
Denominator REAL 32 Largest denominator for Imperial
fractions
(Default 32)
Dimension STRING Number is un-dimensioned
‘NONE’ (Default)
L Number is a LENGTH
L2 Number is an AREA
L3 Number is a VOLUME
The TYPE string can be any
existing values (L L2 L3 NONE) or
any standard dimension (i.e.
Measure), or any standard unit
(which indirectly defines a
dimension) either in full name
(e.g. metre), or description or
shortname (unitqualifier), or
compound unit qualifier (e.g. lb/
m4) form. No validation is actually
performed until the format is used.
DP REAL 2 Number of decimal places for
decimal fractions (Default 2)
ENU BOOLEAN Use ENU format when outputting
TRUE POSITIONS (Default)
FALSE
Use XYZ format when outputting
POSITIONS
Fraction BOOLEAN Fractional part output as decimal
FALSE (Default)
TRUE
Fractional part output as fraction
FtLabel STRING |’| Label used for feet
e.g. ' or FT or ft or feet
(Default ‘ )
InchSeparator STRING |.| Separator between inches and
fractions
(Default . )

© Copyright 1974 to current year. 2:67 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Type Purpose


Label STRING General distance label
|mm|
e.g. mm or m or " or IN
(Default is no label)
The label (and similarly the foot
label and the inch separator can
be any string (within normal and
reasonable unit limitations!). They
are primarily supplied to allow
physical values to be formatted in
any reasonable way on reports, in
files and in text fields etc.
However it is often necessary for
such values to be re-interpreted
by the system (especially as they
are validated after entry in the text
field. In these case, if normal
value and unit parsing fails to
interpret the values then the string
is reinterpreted with the Label,
ftlabel and inch separators
substituted by normal standard
unit qualifiers and separators
enabling the values and units to
be successfully interpreted when
correct and consistent with the
format object.
If the label is set to UNITS then
the standard unit qualifier will be
output by the system, consistent
with the dimension of the format.
PadFractions BOOLEAN Do not pad Fractions (Default)
FALSE Pad Fractions with trailing spaces
TRUE
TrailZeros BOOLEAN Trailing zeros are included up the
required number of decimal
places (as set by the DP member)
if TrailZeros is unset, or if it is
TRUE.
If TrailZeros is FALSE trailing
zeros will be removed up to and
including a trailing decimal point

© Copyright 1974 to current year. 2:68 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Type Purpose


Units STRING Output number in millimetres
MM (Default)
M Output number in metres.
FINCH Output number in feet and inches
INCH Output number in inches
The TYPE string can be any
standard form of unit, or a
compound unit. If dimension is
unset the unit often defines what
the unit is when the format is
used. No validation is performed
on this string until the format is
used when the values will be
converted to units specified.
OriginExp BLOCK With respect to World (Default)
||
With respect to World
|/*|
|CE| With respect to Current Element
Zeros BOOLEAN Leading zeroes are displayed for
Imperial units (Default).
TRUE
FALSE Leading zeroes are not displayed
for Imperial units

Table 2: 42. FORMAT Object Members

© Copyright 1974 to current year. 2:69 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.26 FRAME Gadget

Members

Name Type Purpose


Tag STRING Text to appear as title on the
Get/Set frame.
Val REAL Get/ Selected radio button index
Set as integer.
RGroupCount REAL Get Count of radio buttons
only (RTOGGLES) within the
FRAME’s radio group.
Returns zero if the FRAME is
not a radio group.
Callback STRING Radio group select callback
Get/Set string.
Expanded BOOLEAN FoldUpPanel’s expanded
Get/Set status

Table 2: 43. FRAME Gadget Members

Methods

Name Result Purpose


Rtoggle( !index is REAL ) GADGET Returns the RTOGGLE
gadget with index !index.
Background() STRING Get Background Colour
Name.
Some gadgets do not
support this property in all
circumstances, e.g. gadgets
which are showing a pixmap.
Gadgets whose colour has
not been set explicitly, may
not have a colour with a
known colourname. In this
case an error is raised..

Table 2: 44. FRAME Gadget Methods

Command
The FRAME command defines a frame gadget.
A frame is a container which owns and manages any gadgets defined within its scope,
including other frames.

© Copyright 1974 to current year. 2:70 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

The frame gadget properties visible and active will automatically apply to all of its children,
but will not overwrite their corresponding property values.
There are five types of FRAME: NORMAL, TABSET, TOOLBAR, PANEL and FOLDUP
PANEL.
• A NORMAL frame can contain any type of gadget, including other frames. It also
behaves as a radio group, with radio buttons defined by the set of RTOGGLE gadgets
that it directly contains. See the entry RTOGGLE Object for more about the RTOGGLE
gadget.
• A TABSET frame can contain only tabbed page FRAMEs; you cannot nest them and
they are not named.
• A TOOLBAR frame can contain only a subset of gadget types: BUTTON, TOGGLE,
OPTION, and TEXT. It must have a name and can appear only on main forms.

.---<-------.
/ |
>--FRAME gname -+- TOOLBAR -+- tagtext -+- <toolbar> -* toolbar contents
| ‘—- EXIT -->
| .---<--------.
| / |
+- TABSET -+-- <fgpos> ---|
| +-- <fganch> --|
| +-- <fgdock> --|
| +-- <vshap> ---*
| | .---<--------.
| |/ |
| +-- <tabset> --| tabbed frame contents
| +-- NL --------*
| ‘-- EXIT -->
+- PANEL --+----------.
| ‘--INDENT--|
+- FOLDUPpanel -------| .---<--------.
|/ |
+-- tagtext ---|
+-- <fgpos> ---|
+-- <fganch> --|
+-- <fgdock> --|
+-- <vshap> ---*
| .---<--------.
|/ |
+-- <formc> ---* form contents
‘-- EXIT -->

where the sub-graphs <toolbar>, <tabset> and <formc> define the allowable gadgets
and layout commands available within the specific container type.
Note: The graph <formc> defines the normal content of a form, all gadget types (except
BAR) are allowed. There are restrictions on frame gadget types as defined below.

Setting Up a TOOLBAR Frame


The toolbar frame allows you to define formal toolbars that contain all the gadgets in the
frame’s scope. You can define a toolbar frame only for a main form, and a main form can
contain only toolbar frames.

© Copyright 1974 to current year. 2:71 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

The graph below defines the allowable content of a toolbar frame:

>-- toolbar -+-- <fbutn> ----. Button gadget


+-- <ftext> ----| text gadget
+-- <ftogl> ----| toggle gadget
+-- <foptio> ---| option gadget
+-- <fvar> -----| form variable definition
+-- <pml> ------| general PML
+-- <nxasgn> ---| PML expressions
‘-- <varset> ---‘----> variable setting VARº

Setting Up a TABSET Frame


A TABSET frame defines a container for a set of tabbed page frames. It has no visible
border and no name.
The graph below defines allowable contents of a TABSET frame:

>-- tabset >-+-- <fframe> ---. frame gadget


+-- <fvar> -----| form variable definition
+-- <pml> ------| general PML
+-- <nxasgn> ---| PML expressions
‘-- <varset> ---‘----> variable setting VARº

Note: Frame gadgets defined anywhere within the TABSET frame can only be of type
NORMAL, not TOOLBAR or TABSET frames.
NORMAL frames defined directly within the TABSET frame, will appear as tabbed
pages within it.

Setting up a Panel Frame


The panel is a rectangular region within a form which can contain the normal form gadgets,
but doesn't have to be enclosed in a solid-line box.

Notes:
1. After choosing frame type Panel, the contents is defined in the usual manner.
2. Tagtext can be specified, but it is never displayed.
3. The panel has no visible enclosing box, unless the INDENT option is specified when it
will have a 3D indented appearance.
4. Panel supports all the attributes of a Normal Frame including the notion of a radio
button group.

Setting up in Fold Up Panel


This is a rectangular panel with a visible title bar, and border. The following form in this
section below shows examples of fold-up panel frame gadgets.

Notes:
1. After choosing frame type FoldUpPanel, the contents is defined in the usual manner.
The panel can contain the usual PML gadgets except another FoldUpPanel.
2. Separate events are raised after expanding or collapsing the panel.

© Copyright 1974 to current year. 2:72 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

3. The default state is 'expanded'.


4. When the panel expands or collapses, any gadgets which lie below the panel and
between (or partially between) the panel's horizontal limits will be moved down or up
the form.
5. If the form's AutoScroll attribute is selected, then a scroll bar will automatically appear
whenever gadgets have been moved off the bottom of the form, so that all of the form is
still accessible.
6. The FoldUpPanel supports all the attributes of a Normal Frame including the notion of a
radio button group
The form shown below is a docking dialog which has four fold-up panels, the first two are
collapsed (hidden) and the second two are expanded (shown). Each one has a title bar
which displays the panel's tag text, and an icon which allows the panel to fold-up or fold-
down when it is pressed. Note the use of the form's AutoScroll attribute and the resulting
scroll bar.
The PML code for this example form is given in the file textbug.pmlfrm.

For frames which are FoldUpPanels, 'HIDDEN' and 'SHOWN' events are raised whenever
the user interactively folds or unfolds the panel. These events are only fired if a PML open
callback is defined.
This ensures that the SELECT event, used to signal selection of a radio button within a fold-
up panel can still be handled by simple (non-Open) callbacks.
To manage FoldUpPanels which are also radio groups, then you must supply an open
callback so that you can differentiate the panel's SELECT, HIDDEN and SHOWN events.

© Copyright 1974 to current year. 2:73 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Tabbed Page Frame Visible Property and 'Hidden' event


The VISIBLE property allows a tabbed page to be selected and given focus, e.g.
!this.TabbedPage.visible = true
When a tabbed page frame's tab is interactively selected, there is now a HIDDEN event
raised when the currently shown page is hidden, followed by a SHOWN event when the
newly selected page is shown. These events are only raised if a PML open callback has
been assigned.

2.5.27 Graphical Selection


The Selection object allows the PML user to interact with the graphical selections set. It is
not reliant on PDMS being in graphical mode - the selection set can be created and
manipulated in TTY mode, and thus can be used in regression tests.
Only significant elements can be in selection sets. The definition of what is significant varies
between graphical interaction modes:
• in Design navigate mode, all database elements are significant
• in Model Editor mode, then only those database elements defined in the Model Editor
definition are significant, and some non-database elements.
• In Draft mode, only drawlist elements are significant.
Most methods look for the 'highest significant element' - they climb up the ownership tree
looking for significant elements, until the value of 'scope' is reached - the nearest significant
element below this ceiling is used.

Set-up Methods

Name Purpose
.selection() Creates an empty selection object .

Methods that Modify Object


Note that this object is manipulating the graphical selection set itself. As elements are added
or removed, they will be highlighted in the graphics view at the same time (if in graphics
mode).

Name Result Purpose


.scope(DBREF) BOOLEAN Defines the scope of the
selection, i.e. defines the top
element that the selected
elements must exist beneath.
Default is WORLD.
.add(DBREF) DBREF Adds the highest significant
parent of passed element to
selection

© Copyright 1974 to current year. 2:74 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

.addConnected(DBREF) ARRAY Simulates "Select connected" for


piping components:
Adds the given component and
the connected network relative to
the component
.addBranchLeg(DBREF) ARRAY Simulates "Select leg" for piping
components:
Adds the given component and
adjacent components within the
branch which are in the same leg
as the passed component
.addAttached(DBREF) ARRAY Simulates "Select attached" for
sections:
Adds the given section and all
sections attached into the
selection
.addOffspring(DBREF) ARRAY Adds the highest significant sub-
elements of given element to
selection. This action as if
DBREF were ancestor for select
.remove(DBREF) No Result Remove highest significant
parent of passed element from
selection
.clear() No Result Empty the selection

.getCurrent() No Result Set the contents of the selection


to the contents of the current
graphical selection set
.getAll() No Result Set the selection set to contain
the entire drawlist
.setCurrent() No Result Set the current graphical
selection set to be the same as
the contents of the selection set

© Copyright 1974 to current year. 2:75 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Query Methods

Name Result Purpose


.isValid() BOOLEAN Is the selection valid. (This is
a standard method, and
should not normally need to
be called)
.selected(DBREF) DBREF Returns highest significant
parent of given element, i.e.
the element which will be
included in the selection
.isSelectable(DBREF) BOOLEAN Returns true if the given
element is in itself selectable
within the scope of the
selection
.isModifiable(DBREF) BOOLEAN Returns true if the highest
significant parent of the given
element is modifiable
.inSelection(DBREF) BOOLEAN Returns true if the given
element exists in the selection
.ancestors(DBREF) ARRAY of Returns list of permissible
DBREFs ancestors for given element,
within the current scope
.getSelection() ARRAY of Returns all elements in the
DBREFs selection

Table 2: 45. Graphical Selection Object Methods

2.5.28 IDList
The IDList object provides features for the accessing and manipulation of elements in an
IDLIST database element.
Elements in the IDlist object must be significant elements, in the following sense. The
database element reference supplied to the constructor is examined to see if it either:
• Owns a valid design drawlist element; in which case the supplied element is added to
the idlist object.
• Is owned by a drawlist element, in which case the significant owner is added to the
idlist.
Elements below the level of the design drawlist element cannot be manipulated via this
object.

© Copyright 1974 to current year. 2:76 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Set-up Methods

Name Purpose
.idlist(DBREF) Creates an PML IDlist object from the given DBREF of an
IDLIST. Searches up the ownership hierarchy until a
significant element is found, and adds this to the Idlist.

Before adding an ADDE, the object will check whether there is an 'active' ADDE in the list -
this is an ADDE for the identical element, without an intervening REME for the same object.
If so, it will not add it again. Similarly for REMEs.
When removing ADDEs or REMEs, the system will start from the bottom of the list and work
backwards removing the requested entry.

Access Methods

Name Result Purpose


.add (DBREF) No Result Adds a ADDE to the IDLIST. If there is
already an ADDE of either the same
element or one of its ancestors (without
an intervening REME) then nothing will
be done. If there is an intervening
identical REME, then the REME is
removed.
.add (SELECTION) No Result Adds ADDEs for the entire selection set
to the IDList at this point, in the same
way as for individual DBREFs.
.remove (DBREF) No Result If there exists an ADDE for this element
in the list, then it is removed. If there
exists an ADDE for an ancestor for this
element, then a REME is inserted.
.remove (SELECTION) No Result Removes all ADDEs defined in the
selection set, using the same rules as in
removing a single element.
.copy(IDLIST other) BOOLEAN Clears the idlist, and adds all the entries
from idlist other. Returns TRUE if copy
successful.
.clear() No Result Remove all elements from idlist

.query() ARRAY of Returns an array of strings of the form:


STRINGS
ADDE element
or
REME element
itemising all the elements in the idlist.

Table 2: 46. IDlist Object Methods

© Copyright 1974 to current year. 2:77 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.29 LINE Gadget

Members and Methods


The LINE gadget supports the standard default gadget members and methods only.

Command
The Line gadget gives the ability to display horizontal or vertical lines to separate groups of
gadgets on a form, for increased clarity of intent. The line's presentation reflects the colour
of the current Windows scheme.
.-------<---------------.
/ |
>--- LINE gname -+- tagtext ---------------|
+- <fgpos> ---------------|
+- <fganch> --------------|
+- <fgdock> --------------*
|
+- VERTical ---.
| |
'- HORIZontal -'- <vshap> -->

Example: The form 'Nested Frames' above shows a vertical LINE and a horizontal LINE.
The code snippet below shows the construction of the innermost frame f3.
frame .f3 'f3'
vdist 0.2
hdist 0.5
toggle .t1 'Toggle 1' at x 2
line .horiz 'H-Line' Horiz wid.f3 hei.t1
toggle .t2 'Toggle 2'
line .vert at xmin.f3 ymin.f3+0.5 Vert wid 2 hei.f3

© Copyright 1974 to current year. 2:78 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

exit

Notes:
1. The tag text is never displayed.
2. Line does not apply to toolbars.
3. The graph <vshap> allows the line's width and height to be set either specifically or in
terms of other gadgets on the form.
4. Setting the height for a Horizontal separator or the width for a Vertical separator causes
the line to be drawn across the middle of the implied area. This allows for equal spacing
on each side of the separator line. Otherwise a default width or height is assumed.
5. The Dock and Anchor attributes allow the Lines to be dynamic and respond to
interactive changes in form size.
6. The gadget is not interactive and has no associated value.

2.5.30 LINE Object


See also the POINTVECTOR object.

Members

Name Type Purpose


StartPosition POSITION Start position of line.
Get/Set
EndPosition POSITION End position of line.
Get/Set

Table 2: 47. LINE Object Members

Definition Methods
None of these methods modifies the original object.

Name Result Purpose


Line( POSITION first, POSITION LINE Creates a LINE between the
second) given positions, first and
second.
String() STRING Returns the line as a
STRING.
Direction() DIRECTION Returns a DIRECTION
representing the direction of
the line.
Direction(DIRECTION way) LINE Creates a new line with the
same start position and
length but in the direction
given by way.

Table 2: 48. LINE Object Definition Methods

© Copyright 1974 to current year. 2:79 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

EndPosition
Direction(DIRECTION)

StartPosition

Figure 2:20. : Basic LINE Definition

LINE Object Methods that Return BOOLEANs


None of these methods modifies the original object.

Name Result Purpose


On(POSITION where) BOOLEAN Returns TRUE if where lies
on the unbounded line.
On(POSITION where, BOOLEAN BOOLEAN Returns TRUE if where lies
bounded) on the line, bounded
indicates if the point is also
checked to be on the
bounded line segment.
OnProjected(POSITION where) BOOLEAN Returns TRUE if where,
when projected onto the line,
lies within the bounded line.

Figure 2:21. LINE Object Methods that Return BOOLEANs

OnProjected(POSITION) 9

On (POSITION) 9

Figure 2:22. BOOLEANs Returned by LINE Object Methods

© Copyright 1974 to current year. 2:80 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

LINE Object Methods that Return POSITIONs


None of these methods modifies the original object.

Name Result Purpose


Intersection(LINE other) POSITION Returns the intersection point
of the passed LINE on the
line definition
Intersection(POINT point, POSITION Returns the intersection point
VECTOR vector) of the passed
POINTVECTOR on the line
definition.
Intersection(PLANE plane) LINE Returns the intersection line
of plane on the line
definition.
Intersections(ARC arc) ARRAY OF Returns the intersection
POSITIONS points of arc on the line
definition.
Near(POSITION position) POSITION Returns the nearest position
on the line definition to
position.
Proportion(REAL proportion) POSITION Returns the position at
proportion along the
“bounded” line from the
StartPosition.
Values > 1 will give positions
off the end of the line.
Values < 0 will give positions
off the start of the line.

Table 2: 49. LINE Object Methods that Return POSITIONs

Proportion(REAL)
Intersection(LINE)

Near(POSITION)

Figure 2:23. POSITIONs Returned by LINE Object Methods

© Copyright 1974 to current year. 2:81 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

LINE Object Methods that Return REALs


None of these methods modifies the original object.

Name Result Purpose


Length() REAL Returns the length of the line.
Distance(LINE other) REAL Returns the minimum
distance between the line
definition and other.
Distance(POSITION position) REAL Returns the minimum
distance between the line
definition and position.

Figure 2:24. Table -48: LINE Object Methods that Return REALs

Length()

Distance(POSITION)

Distance(LINE)

Figure 2:25. REALs Returned by LINE Object Methods

LINE Object: Miscellaneous Methods


None of these methods modifies the original object.

Name Result Purpose


Plane() PLANE Returns a plane object, using
the StartPosition and
Direction of line object
Pointvector() POINTVEC Returns a POINTVECTOR
TOR object, using the
StartPosition and Direction
of line object

Figure 2:26. LINE Object Miscellaneous Methods

© Copyright 1974 to current year. 2:82 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

LINE Object Methods that Return LINEs (a)


None of these methods modifies the original object.

Name Result Purpose


SetLengthStart(REAL length) LINE Returns a new line,
maintaining the original
StartPosition and direction,
with an EndPosition to
match length.
SetLengthEnd(REAL length) LINE Returns a new line,
maintaining the original
EndPosition and direction,
with a StartPosition to
match length.
Towards(POSITION position) LINE Returns a new line object
with the same StartPosition
and the same relative
EndPosition (Length) of the
original line, but the direction
is from the start position to
position.
From(POSITION position) LINE Returns a line, where the
StartPosition is set
position, maintaining the
original EndPosition.
To(POSITION position) LINE Returns a line, where the
EndPosition is set to
position, maintaining the
original StartPosition
ExtendStart(REAL distance) LINE Returns a new LINE, where
the StartPosition has been
extended in the opposite
direction of line by distance.
ExtendEnd(REAL distance) LINE Returns a new LINE, where
the EndPosition has been
extended in the direction of
the line by distance.

Table 2: 50. LINE Object Methods that Return LINEs (a)

© Copyright 1974 to current year. 2:83 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

ExtendEnd(REAL)

To(POSITION)

SetLengthStart(REAL)
ExtendStart(REAL)

Towards(POSITION)

From(POSITION) SetLengthEnd(REAL)

Figure 2:27. LINEs Returned by LINE Object Methods (a)

LINE Object Methods that Return Lines (b)

Name Result Purpose


ExtendStart(PLANE plane) LINE Returns a new LINE, where
the StartPosition has been
extended to plane.
ExtendEnd(PLANE plane) LINE Returns a new LINE, where
the EndPosition has been
extended to plane.
ReverseSense() LINE Returns a line, where the
StartPosition and
EndPosition have been
transposed.
Projected(PLANE plane) LINE Returns a LINE definition
normalised onto plane. See
picture.
Parallel(POSITION position) LINE Returns a parallel to the line
definition of the line object,
through position. All other
members are copied. See
picture.
Offset(DIRECTION direction, REAL LINE Returns a parallel line to the
offset) LINE object, offset by offset
from the original in the given
direction. See picture.

Figure 2:28. LINE Object Methods that Return LINEs (b)

© Copyright 1974 to current year. 2:84 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Parallel(POSITION)

Offset(DIRECTION, REAL)

Projected(PLANE)

Figure 2:29. LINEs Returned by LINE Object Methods (b)

LINE Object Methods that Return Lines (c)

Name Result Purpose


Overlap(LINE other) LINE Returns the overlapping line
of two parallel lines. All
positions are return projected
onto the original object. See
picture.
Union(LINE other) LINE Returns the union of LINE
and other. The two are
parallel lines, all positions
are return projected onto the
original object. See picture.

Table 2: 51. LINE Object Methods that Return LINEs (c)

Union(Line)

Overlap(Line)

Figure 2:30. LINEs Returned by LINE Object Methods (c)

© Copyright 1974 to current year. 2:85 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

LINEARGRID Object Construction Aids

Members

Name Type Purpose


Position POSITION Origin of the grid
Get/Set
Orientation ORIENTATI Orientation of the grid
ON Get/Set
XSpacing REAL Spacing in the X direction
Get/Set
YSpacing REAL Spacing in the Y direction
Get/Set

Table 2: 52. LINEARGRID Object Members

Definition Methods
These methods do not modify the original object.

Name Result Purpose


Lineargrid( POSITION, LINEARGRID Creates a grid with the given
ORIENTATION, REAL, REAL) POSITION, ORIENTATION,
and X and Y spacing.
String() STRING Returns the grid as a string

Table 2: 53. LINEARGRID Object: Basic Members

Orientation

YSpacing

Z Y

Position

XSpacing

Figure 2:31. LINEARGRID Basic Definition

© Copyright 1974 to current year. 2:86 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

LINEARGRID Object Methods that Return POSITIONs


None of these methods modifies the original object.

Name Result Purpose


GridPoint(REAL, REAL) POSITION Returns the position at the
intersection of the passed X and
Y lines from the origin of the
grid. Values can be +ve or -ve
depending on the side of the
origin
Snap(POSITION) POSITION Returns the nearest intersection
point to the passed position,
when mapped onto the grid
plane
Snap(LINE) POSITION Returns the nearest intersection
point to the intersection of the
passed line and the grid plane
Snap(POINTVECTOR) POSITION Returns the nearest intersection
point to the intersection of the
passed point vector and the grid
plane
SnaptoCentre(POSITION) POSITION Returns the nearest mesh cell
centre point to the passed
position, when mapped onto the
grid plane
SnaptoCentre(LINE) POSITION Returns the nearest mesh cell
centre point to the intersection
of the passed line and the grid
plane
SnaptoCentre(POINTVECTOR) POSITION Returns the nearest mesh cell
centre point to the intersection
of the passed point vector and
the grid plane

Table 2: 54. LINEARGRID Object Methods that Return POSITIONs

© Copyright 1974 to current year. 2:87 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Snap(POSITION)

Snap(LINE)

GridPoint(REAL, REAL)

Figure 2:32. POSITIONs Returned by LINEARGRID Methods

2.5.31 LINEARGRID Object


This method does not modify the original object.

Name Result Purpose


Plane() PLANE Returns the grid as plane object

Table 2: 55. Miscellaneous LINEARGRID Object Methods

Within(POSITION) 
Plane()

Within(POSITION) 

Figure 2:33. Miscellaneous Return Values from LINEARGRID Methods

© Copyright 1974 to current year. 2:88 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

LINEARGRID Object Methods that Return XYOffsets


This method does not modify the original object.

Name Result Purpose


XYOffset(POSITION) XYPOSITION Returns the position, mapped
onto the grid plane, in terms of
an XY offset from the grid
plane origin

Table 2: 56. LINEARGRID Object Methods that Return XYOffsets

XYOffset(POSITION)

Figure 2:34. XYOffsets Returned by LINEARGRID Object Methods

© Copyright 1974 to current year. 2:89 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.32 LIST Gadget

Members

Name Type Purpose


Val REAL Get/Set Selected field-number of a
single-choice list.
Val REAL ARRAY Selected field numbers of a
Get/Set multiple-choice list.
DText STRING Set or get the entire list of
ARRAY Get/Set display texts.
DText[n] STRING Get Get the display text of the n'th
Only field.
PickedField REAL Get Only Last picked list field number.
RText STRING Set or get the list of
ARRAY Get/Set replacement texts.
RText[n] STRING et Get the replacement text of the
Only n'th field.
Count REAL Get count of number of fields in
Get only the list
val REAL Selected field as integer. Zero
Get/Set implies no selection. Setting
val to zero will cause an error
for mandatory selection lists.

Table 2: 57. LIST Object Members

© Copyright 1974 to current year. 2:90 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


Add(STRING Dtext) NO RESULT Append an entry to the list,
where Dtext is the text to
display in the option list.
Add(STRING Dtext, STRING NO RESULT Append and entry to the list,
Rtext)) where Dtext is the text to
display in the option list, and
Rtext is the replacement text
for the new field. If Rtext isn’t
specified, it will be set to Dtext
by default.
FullName() STRING Get the full name of the gadget,
e.g..'!!Form.gadget'
Name() STRING Get the gadget's name, e.g.
'gadget'
Owner() FORM Get owning form.
Select(STRING text, STRING NO RESULT Select specified item in a list.
value) text must be ‘Rtext’ or ‘Dtext’.
value is the RTEXT or DTEXT
of the item to be selected.
Select(STRING text, ARRAY NO RESULT Select multiple choice list
of STRING values) items. text must be 'Rtext' or
'Dtext'. values contains the
RTEXT or DTEXT values to be
selected.
Selection( ) STRING ARRAY Get selected RTEXT
OF STRING
Array of RTEXT for multi-choice
list.
Selection(STRING text) STRING ARRAY Get selected RTEXT or DTEXT
OF STRING
Array of texts for multi-choice
list.
text must be 'Rtext' or 'Dtext'.
Clear() NO RESULT Clear list contents and
selections.
ClearSelection() NO RESULT Clear list selections.
SetPopup(MENU menu) NO RESULT Links menu with the gadget as
a popup.
RemovePopup(MENU menu) NO RESULT Removes popup menu from
the gadget.

© Copyright 1974 to current year. 2:91 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


GetPickedPopup() MENU Returns the last picked popup
menu for the gadget.
Refresh() NO RESULT Refreshes the display of the
gadget.
Shown() BOOLEAN Get ‘shown’ status.
Type() STRING Get the gadget type as a
STRING.
SetToolTip(STRING) NO RESULT Allows a TOOLTIP to be edited.
SetFocus() NO RESULT Move keyboard focus to this
gadget.
SetHeadings(!Dtexts is NONE Specifies the number of
STRING) columns and sets the list's
column headings. Dtexts
contains a set of TAB separated
sub-strings.
SetHeadings(!Dtexts is NONE Specifies the number of
ARRAY) columns and sets the list's
column headings. Dtexts is an
array of strings.
Clear( !dtext ) NO RESULT Delete the field with the given
DTEXT string.
Clear( !fieldNumber ) NO RESULT Delete the specified field
number.
SetRows(Array of (Array of NO RESULT This sets the display text for all
STRING)) the data fields of the list gadget
by row. If the list gadget is
already populated then it
replaces all the current rows by
the new ones. Array is an array
of ‘row arrays’, and its size
determines the number of rows
in the list. Each entry is a row
array of strings, which supplies
the displayed text for each
column of the row. The size of
each row array must be less
than or equal to the number of
columns of the list. The
columns are filled sequentially
until the array is exhausted.

© Copyright 1974 to current year. 2:92 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


SetColumns(Array of (Array NO RESULT This sets the display text for all
of STRING)) the data fields of the list gadget
by column. If the list gadget is
already populated then it
replaces all the current rows by
the new ones. Array is an array
of ‘column arrays’, and its size
must match the number of
columns of the list. The size of
each all column arrays must be
the same and determines the
no of rows in the list.
Select(REAL column, STRING NO RESULT This selects the first list row
dtext) whose column column has the
display text dtext. If the field is
not found then the list selection
is unaltered. If the list is a multi-
choice list then repeated use of
this method will add selections
to the list.
Background() STRING Get Background Colour Name.
Some gadgets do not support
this property in all
circumstances, e.g. gadgets
which are showing a pixmap.
Gadgets whose colour has not
been set explicitly, may not
have a colour with a known
colourname. In this case an
error is raised..

Table 2: 58. LIST Object Methods

Column Headings
The number of columns is deduced from the List's data. If the user specifies a set of (1 or
more) column headings before the list is populated, then this will determine the number of
columns. If no headings are pre-specified then the number of columns is deduced from the
display text (Dtext) of the List's first data field. This provides upwards compatibility for
existing Appware using single column lists.
A List gadget's headings can be replaced after the list has been populated. If the new
headings specify the same number of columns then the headings are replaced but the List's
data fields and selection remain unchanged. If the number of columns is different, then the
list is replaced by an empty list with the new headings.
Invoking the Clear() method will clear the list's data fields and rebuild the current headings.
There are two methods for defining a List's column headings:
The data fields can be set using the List's DTEXT member or its Add methods, where a
row's Dtext string can be a set of TAB separated column sub-strings for populating multiple
columns. Alternatively you can use the SetRows or SetColumns methods.

© Copyright 1974 to current year. 2:93 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Single choice lists

Reselection of the Selected Field can be Disallowed


For Single choice lists there is a keyword NORESELECT which disables UnSelect and
Select events when the currently selected field is clicked with the mouse, for example:
list .l1 |List gadget| zeroSel noReselect width 15 length 5 tooltip 'single choice list'

De-selection of the selected field for ZeroSelection lists


For ZeroSelection lists it is possible to interactively deselect the selected field by clicking in
unused rows or after the last column.
The val member now allows programmatic de-selection of the current field.

Unselect Events
Single choice List gadgets support UNSELECT events. Typically when a field is selected, an
UNSELECT event is raised for the previously selected field (if any) and then a SELECT
event is raised for the new field. An UNSELECT event is raised whenever a selected field is
interactively deselected.

Notes:
1. UNSELECT events are not notified to PML unless an open callback has been specified
(so that SELECT and UNSELECT events can be differentiated).
2. Typically the UNSELECT action allows Appware to manage consequences of
deselection for any dependent gadgets or forms.
3. We recommend that you do not change the List's selection programmatically in an
UNSELECT event.

Command
The LIST command defines a single-choice or multiple-choice list gadget, and specifies its
position, tag, number of columns and callback text. Also defines the area (width and height)
in which the displayed part of the list will appear.
The arrays defining the display texts and replacement texts for the list options are usually
set in the form's default constructor method.

© Copyright 1974 to current year. 2:94 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

.-------<--------.
/ |
>- <flist> - LIST gname -+- <fgtagw> ------|
+- <fgpos> -------|
+- <fganch> ------|
+- <fgdock> ------|
+- CALLback text -|
+- TOOLTIP text --|
+- CORE ----------* Core managed gadget
|
+- MULTiple --------.
| .-------<-------. |
|/ | |
+- NORESELect ----| |
+- ZEROSELection -* |
‘-------------------‘- <vshap> +- TOOLTIP text -.
‘----------------‘->

Figure 2:35. Syntax Graph -: Setting-up a LIST Object

Note: The TOOLTIP keyword can be given at two different places in the syntax.

Default: A single choice, mandatory selection list.

2.5.33 LOCATION Object

Members

Name Type Purpose


Name STRING Location name.
Description STRING Description, up to 120
characters.
Locid STRING Location identifier.
Refno STRING STRING containing
Database reference no.
IsCurrent BOOLEAN True for the current Location.

Table 2: 59. LOCATION Object members

© Copyright 1974 to current year. 2:95 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


LOCATION(DBREF) LOCATION Returns a LOCATION object,
given a DBREF.
LOCATION(STRING) LOCATION Returns a LOCATION object,
given a name or reference
number (Global projects only).
Dblist() ARRAY OF DB Array of DB objects for
Allocated DBs. This method
does not modify the original
object.
Sessions() ARRAY OF Return array of all Sessions
SESSIONS extracted from COMMs db at
the Location. This method
does not modify the original
object.
String() STRING STRING containing Location
name. This method does not
modify the original object.

Table 2: 60. LOCATION Object Methods

Note: The Sessions() method provides information required for remote expunging. This
method will cause daemon activity for locations other than the current location.

You can use the constructors in the following ways:


!D = OBJECT LOCATION(!!CE)
!D = OBJECT LOCATION(!!CE.Name)
!D = !!CE.LOCATION()!D = !!CE.Name.LOCATION()
In all cases, !!CE is assumed to be a DB database element and !!CE.Name is a STRING
object containing the element’s name.
These methods should assist performance improvements to AppWare by making it easier to
get from Database element to Object.

© Copyright 1974 to current year. 2:96 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.34 MACRO Object

Member

Name Type Purpose


Filename STRING Inter-DB macro filename (up
to 17 characters).
From DB Source DB of inter-DB
connection macro.
Number REAL Inter-DB macro number.
To DB Target DB of inter-DB
connection macro.

Table 2: 61. MACRO Object Members

Command

!ARRAY = MACROS $ Returns an array of all the MACRO objects in


$ the project

2.5.35 MDB Object

Member

Name Type Purpose


Name STRING Name of the MDB, up to 32
characters
Description STRING MDB description, up to 120
characters
Refno STRING String containing Database
reference number

Figure 2:36. MDB Object Members

© Copyright 1974 to current year. 2:97 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods
None of these methods modifies the original object.

Name Result Purpose


MDB(DBREF) MDB Returns an MDB object,
given a DBREF.
MDB(STRING) MDB Returns an MDB object,
given a name or reference
number.
Current() ARRAY OF Current databases as an
DBS array of DB objects
Deferred() ARRAY OF Deferred databases as an
DBS array of DB objects
Mode() ARRAY OF Returns ‘NR’ or ‘RW’ for each
STRINGS current DB of the MDB

Table 2: 62. MDB Object Methods

You can use the constructors in the following ways:

!D = OBJECT MDB(!!CE)
!D = OBJECT MDB(!!CE Name
!D = !!CE.MDB()
!D = !!CE.Name.MDB()

In all cases, !!CE is assumed to be a DB database element and !!CE.Name is a STRING


object containing the element’s name.
These methods should assist performance improvements to AppWare by making it easier to
get from Database element to Object.

Command

!ARRAY= MDBS $ Returns an array of MDB objects in the project

© Copyright 1974 to current year. 2:98 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.36 MEASURE Object

Members

Name Type Purpose


Constructors
Measure () MEASURE Creates an invalid/unset
dimension (INVALID).
Measure(STRING) MEASURE Creates a MEASURE of
which string is a 'reasonable'
match to any of description,
name, hashcode, format
code (L, L2 etc) or any other
recognisable name or
abbreviation of a unit of the
measure.
Measure(REAL) MEASURE Creates a MEASURE of
which the value of REAL is a
(valid) enum value, or is a
negative (non standard)
dimension..

Table 2: 63. MEASURE Object Members

Methods

Name Result Purpose


Description() STRING Long description of
String() dimension.
Name() STRING Unique name used for
format statements and
commands
Hashcode() STRING Hash code of dimension.
Ptype() Returns 'GENERIC' if
generic dimension - i.e. non
standard.
Current Unit Methods
currentunits() UNIT Returns current unit of this
dimension.
UnitQualifier() STRING Unit qualifier of current units.

UnitFactor() REAL Conversion factor to


database units from current
units.

© Copyright 1974 to current year. 2:99 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


SetUnits(unit) BOOLEAN Returns true if successfully
set current unit of the
dimension to unit.
Numeric() BOOLEAN Sets current units of
dimension to be Numeric (i.e.
no unit conversion in place).
NUMERIC units have
Hashcode NUMB and null
names, unitqualifiers, and
descriptions.
Returns true if successful.
Default() BOOLEAN Sets current units of all
dimensions to those defined
by catalogue BUNI/DUNI.
Returns true if successful.
Suspend() BOOLEAN Suspends current units of all
physical quantities and
operates exclusively in
database units. Pushes up
one level of suspension.
Returns true if successful.
SuspendLevel() REAL Returns number of levels of
suspension of current units.
If 0 no suspension in force.
Reinstate() BOOLEAN Reinstates currently defined
current working units for all
quantities. Clears
suspension stack.
Returns true if successful.
Unsuspend() BOOLEAN Pops one level of suspension
stack of current units. If level
now one working in defined
current units.
Returns true if successful.
General Queries
IsNull() BOOLEAN TRUE if dimension is NONE.

IsStandard() BOOLEAN TRUE if dimension is a


named (standard) dimension.
FALSE if specified from
powers of its base
components (i.e. Generic).

© Copyright 1974 to current year. 2:100 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


DBUnits() UNIT Database unit for this
DBUnit() dimension.
UnitsOf() ARRAY of Set of standard units of this
UNITs dimension.
AllDimensions() ARRAY of Set of all standard
MEASUREs dimensions.
AllUnits() ARRAY of Set of all named Units
UNITs
Enum() REAL Unique integer ID for this
Dimension.
Positive if standard
dimension (packed Hash
Value)
Negative if generic
dimension coded from
component base
dimensions.

2.5.37 MENU Object

Members

Name Type Purpose


Callback STRING Sets/gets the callback on the
menu.
Get/Set
PickedField STRING Returns the DTEXT of the
last picked menu field.
Get Only
Using this member is now
deprecated. Use the
PickedFieldName property
instead.
PickedFieldName STRING Returns the field name of the
last-picked TOGGLE or
Get Only
CALLBACK field.

Table 2: 64. MENU Object Members

© Copyright 1974 to current year. 2:101 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


Add('SEPARATOR', {STRING NO RESULT Append a SEPARATOR field,
fieldName}) with an optional STRING
argument, fieldName, that if
present denotes the unique
field-name in the menu.
Add('CALLBACK', STRING Dtext, NO RESULT Append a CALLBACK field
STRING callback, {STRING with Dtext, which may
fieldName}) contain multi-byte
characters, but which cannot
be NULL or blank.
The argument callback
gives the callback command.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.
Add('FORM', STRING Dtext, STRING NO RESULT Append a FORM display field
formName, {STRING fieldName}) with Dtext, which may
contain multi-byte
characters, but which cannot
be NULL or blank.
The argument formName,
gives the name of the form to
be displayed, which may be
NULL but may not be blank.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu
Add('MENU', STRING DText, STRING NO RESULT Append a MENU (pullright)
menuName, {STRING fieldName}) field with Dtext, which may
contain multi-byte
characters, but which cannot
be NULL or blank.
menuName gives the pullright
menu name, which may be
NULL but may not be blank.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.

© Copyright 1974 to current year. 2:102 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Add('TOGGLE', STRING Dtext, NO RESULT Append a TOGGLE field with
STRING callback, {STRING Dtext, which may contain
fieldName}) multi-byte characters, but
which cannot be NULL or
blank.
The argument callback
gives the callback command,
which must be an open PML
function.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.
Clear() NO RESULT Removes all menu fields
from the menu.
Using this method is
deprecated.
Clear(STRING Dtext) NO RESULT Removes menu fields
starting with the one that
matches Dtext onwards.
Using this method is
deprecated
FieldProperty(STRING menuField, BOOLEAN Get the value of the property
STRING property) named in property for the
menu field named in
menuField.
The allowed values for
property are ‘ACTIVE’,
‘VISIBLE’, or ‘SELECTED’.
FullName() STRING Returns menu object's full
name, for example:
‘!!Form.Menu’.
InsertAfter(STRING menuField, NO RESULT Insert a CALLBACK field with
‘CALLBACK’, STRING Dtext, STRING Dtext, which may contain
callback, {STRING fieldName}) multi-byte characters, but
which cannot be NULL or
blank, immediately after the
menu field identified by
menuField.
The argument callback
gives the callback command.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.

© Copyright 1974 to current year. 2:103 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


InsertAfter(STRING menuField, NO RESULT Insert a FORM display field
‘FORM’, STRING Dtext, STRING with Dtext, which may
formName, {STRING fieldName}) contain multi-byte
characters, but which cannot
be NULL or blank,
immediately after the menu
field identified by menuField.
The argument formName
gives the name of the form.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.
InsertAfter(STRING menuField, NO RESULT Insert a MENU (pullright)
‘MENU’, STRING Dtext, STRING field with Dtext, which may
menuName, {STRING fieldName}) contain multi-byte
characters, but which cannot
be NULL or blank,
immediately after the menu
field identified by menuField.
The argument menuName
gives the name of the form.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.
InsertAfter(STRING menuField, NO RESULT Append TOGGLE field with
‘TOGGLE’, STRING Dtext, STRING Dtext, which may contain
menuName, {STRING fieldName}) multi-byte characters, but
which cannot be NULL or
blank, immediately after the
menu field identified by
menuField.
The argument callback
gives the callback command,
which must be an open PML
function.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.

© Copyright 1974 to current year. 2:104 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


InsertAfter(STRING menuField, NO RESULT Append a SEPARATOR field
‘SEPARATOR’, {STRING fieldName}) immediately after the menu
field identified by menuField.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.
InsertBefore(STRING menuField, NO RESULT Insert a CALLBACK field with
‘CALLBACK’, STRING Dtext, STRING Dtext, which may contain
callback, {STRING fieldName}) multi-byte characters, but
which cannot be NULL or
blank, immediately before
the menu field identified by
menuField.
The argument callback
gives the callback command.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.
InsertBefore(STRING menuField, NO RESULT Insert a FORM display field
‘FORM’, STRING Dtext, STRING with Dtext, which may
formName, {STRING fieldName}) contain multi-byte
characters, but which cannot
be NULL or blank,
immediately before the menu
field identified by menuField.
The argument formName
gives the name of the form.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.
InsertBefore(STRING menuField, NO RESULT Insert a MENU (pullright)
‘MENU’, STRING Dtext, STRING field with Dtext, which may
menuName, {STRING fieldName}) contain multi-byte
characters, but which cannot
be NULL or blank,
immediately before the menu
field identified by menuField.
The argument menuName
gives the name of the form.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.

© Copyright 1974 to current year. 2:105 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


InsertBefore(STRING menuField, NO RESULT Append TOGGLE field with
‘TOGGLE’, STRING Dtext, STRING Dtext, which may contain
menuName, {STRING fieldName}) multi-byte characters, but
which cannot be NULL or
blank, immediately before
the menu field identified by
menuField.
The argument callback
gives the callback command,
which must be an open PML
function.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.
InsertBefore(STRING menField, NO RESULT Append a SEPARATOR field
‘SEPARATOR’, {STRING fieldName}) immediately before the menu
field identified by menuField.
There is also an optional
fieldName argument that, if
present, denotes the unique
field name in the menu.
Name() STRING Returns menu object's
simple name, for example:
'Menu'.
Owner() FORM Returns reference to owning
form.
PopupGadget() GADGET Returns the name of the
gadget that popped up the
menu. The value is unset if
the menu was not popped up
by a gadget.
Refresh() NO RESULT Refreshes the display of the
gadget.
Select(STRING Dtext, BOOLEAN NO RESULT Set the selected status of
status) TOGGLE field identified by
Dtext to the value of status.
Using this method is
deprecated.
Selected( STRING Dtext ) BOOLEAN Get selected status of the
TOGGLE field identified by
Dtext.
Using this method is
deprecated.

© Copyright 1974 to current year. 2:106 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


SetActive(STRING Dtext, BOOLEAN NO RESULT Set the active status of the
active) menu field identified by
Dtext.
Using this method is
deprecated.
SetFieldProperty(STRING NO RESULT Set the value of property
menuField , STRING property, with value, for the menu field
BOOLEAN value) identified by menuField.
The allowed values for
property are ‘ACTIVE’,
‘VISIBLE’, or ‘SELECTED’.
But see the note below for
special cases when you use
a SEPARATOR field.

Table 2: 65. MENU Object Methods

Note: Setting the Active and Visible properties of a SEPARATOR field will affect the
implied group of fields comprising the SEPARATOR field and all subsequent fields up
to but not including the next SEPARATOR field.
For each of the Add() methods above, you can use a special field-type to indicate
that the field is managed by core-code i.e. CORESEPARATOR, CORECALLBACK,
COREFORM, COREMENU, and CORETOGGLE.
You do not need to specify callback functions for core-managed fields.

Command
MENU objects are owned by FORM objects, and can be created within form setup mode. It
is also possible to add a new menu to an existing form - usually for context sensitive popup
menus.
The recommended way to create a menu and its fields, typically within form setup mode, is:
!menu = !this.newmenu( ‘Menu1’, ‘MAIN’ )
!menu.add( ‘CALLBACK’, ‘save’, ‘<callback>’, ‘field1’ )
!menu.add( ‘FORM’, ‘save asº’, ‘saveForm’, ‘field2’ )

Note:
• Each menu is either part of the Main menu system or part of the Popup menu system,
but cannot belong to both.
• If you specify neither POPUP nor MAIN at setup time, then the menu’s usage is initially
unknown. The system will attempt to deduce the usage type from the first action that
references the menu.
• Menus in the Main system can only appear once. That is, a main system menu cannot
be a sub-menu of several menus.
• Menus in the Popup system may appear only once in a given popup tree, but may be
used in any number of popup trees.
• A menu cannot reference itself, either directly as a pullright of one of its own fields or be
a pullright of another menu in its own menu tree.

© Copyright 1974 to current year. 2:107 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

• You can add menu fields with an optional field-name. If you do not specify a field-
name, then you will not be able to refer to it later.
• You can use a special field-type to indicate that the field is managed by core-code i.e.
CORESEPARATOR, CORECALLBACK, COREFORM, COREMENU, and
CORETOGGLE.
You do not need to specify callback functions for core-managed fields.
An alternative is to use the MENU command, followed by the menu’s ADD commands and
terminated by the EXIT command. The full syntax is shown below:

>-- MENU -- gname -+- POPUP --. .--------<-------.


+- MAIN --| / |
‘----------‘-+- NL -+- <fmenu> -|
+- PML -----*
+- EXIT ----.
‘-----------‘-->

Figure 2:37. Syntax Graph -: Defining a Menu

.-----<-----.
/ |
fmenu>-+- ADD -+- fieldname -|
+- CORE ------*
+- SEParator -------------------------------.
‘- dtext -+- rtext -------------------------|
+- MENU -- gname -----------------|
+- FORM -- fname -----------------|
+- CALLback -+- rtext ------------|
| ‘--------------------|
‘- TOGgle -+- rtext -. |
‘---------+- SELected -|
‘------------‘-->

Figure 2:38. Syntax Graph -: Using Menu,Add()

2.5.38 Multi Discipline Route Manager

mdrRoutePoint

Name Returns Arguments Description Remarks

OwningDbBranch DBREF Returns owner


branch element of
this route point.

OwningRoute mdrRoute Returns owning Redundant? - could be


mdrRoute constructed easily from
OwningDbBranch

© Copyright 1974 to current year. 2:108 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

IsEqual bool mdrRoutePoint Returns true if Checks first if the


objects are equal objects could be
compared by under lying
DB element. If not the
position On is used

ExpandToRoute mdrRoute Expands external


geometry to
mdrRoute object.

IsExternalGeometry bool Returns true if its


an external
geometry object.

EndingRoutePoint mdrRoutePoint Sets end external Valid only if this is a


geometry ending external geometry type
route point. route point

EndingRoutePoint mdrRoute Gets end external Valid only if this is a


Point geometry ending external geometry type
route point. route point

StartingRoutePoint mdrRoutePoint Sets end external Valid only if this is a


geometry starting external geometry type
route point. route point

StartingRoutePoint mdrRoute Gets end external Valid only if this is a


Point geometry starting external geometry type
route point. route point

Position Position Gets position of the Valid only if this isn't an


route point in world external geometry type
coordinates. route point. If there is
DB element owned then
gets the world position,
otherwise its stored as
world position inside an
object

Position Position Sets position of the Valid only if this isn't an


route point in world external geometry type
coordinates. route point. If there is
DB element owned then
sets the local position,
converting it before from
world coordinates,
otherwise sets the world
position inside an object

Radius Real Get the fillet radius


of route point

Radius Real Set the fillet radius Valid only if this isn't an
of route point external geometry type
route point. If there is
DB element owned then
sets the filet radius,
otherwise sets the
radius inside the object

© Copyright 1974 to current year. 2:109 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Clone mdrRoute Returns cloned Clones all the attributes


Point object taken from object which
from this method is
invoked (besides
underlying DB element,
and name)

Name String Gets the name of


named route point

Is That String type Returns true if the Compares if the type is


named types the same with passed as
match argument.

Type String Gets the type of


route point object

Type String type Sets the type of behaviour not specified


route point object

DbElement DBREF Gets the underlying


DB element.

IsEnabled bool Check if element is


enables.

IsNamed Checks if element


is named

IsOn true if route point true if route point are on


are on the same the same position
position

DbElement DBREF Sets owned DB


element.

Enable bool enabled Enables or enable true if we want to


disables route enable route point
point. otherwise false

mdrRoute

Name Returns Arguments Description Remarks

dbWrite bool DBREF Writes to DB Returns true if write


hierarchy. was successful
Argument specify
where to method
should write to.

dbUpdate bool Updates DB Returns true if write


hierarchy. was successful

clone mdrRoute Returns cloned Clones all the attributes


object taken from object which
from this method is
invoked (besides
underlying DB element,
and name)

© Copyright 1974 to current year. 2:110 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

DbElement DBREF Gets the underlying


DB element.

DbElement DBREF Sets the underlying Method changes


element. ownership

Construct DBREF Constructs route


point from DB

Equals Bool Checks for equality


of elements

HeadRoutePoint mdrRoute Gets head route


Point point

TailRoutePoint mdrRoute Gets tail route point


Point

HeadRoutePoint mdrRoutePoint Sets head route


point

TailRoutePoint mdrRoutePoint Sets tail route point

InsertRoutePointAt mdrRoutePoint Inserts route point


Head at head

InsertRoutePointAtT mdrRoutePoint Inserts route point


ail at tail

InsertRoutePoint mdrRoutePoint Insert route points


at chosen index

RemoveRoutePoint mdrRoutePoint Remove route


point from route

FindRoutePoint mdrRoutePoint Gets route index of


route point (0
based)

RoutePoints Array of Gets route points


mdrRoutePoint

InsertRouteAtHead mdrRoute Merge two routes


on head

InsertRouteAtTail mdrRoute Appends route at


end

insert Route mdrRoute, Inserts route at


mdrRoutePoint route point

ExpandToRoute Expands all the ext


geom. into route

ExpandRoutePoint mdrRoute mdrRoutePoint In place expand of


ext geom.

size real number of route


points in route

at mdrRoute real Route Point at


Point

© Copyright 1974 to current year. 2:111 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

SubRoute mdrRoute mdrRoutePoint, Cuts the route


mdrRoutePoint between two route
points

HeadSubRoute mdrRoute mdrRoutePoint Creates sub route


from head to route
point

TailSubroute mdrRoute mdrRoutePoint Creates sub route


from route point to
tail

Transform Orientation Transforms route

Length Real Calculates route


length

Length Real mdrRoutePoint, Length between


mdrRoutePoint two route points

Length From Real Length from route


point

mdrBaseManager

Name Returns Arguments Description Remarks

CreateRoutePoint mdrRoute Position Route point from


Point pos

CreateRoutePoint mdrRoute DBREF Route Point from


Point dbref

CreateRoutePoint DBREF Route from dbref

FindRoute Array of mdrConnection For given


mdrConec Graph, connection graph,
tionPoint mdrRoutePoint, and two
mdrRoutePoint RoutePoints, find
the best path
between these
route points

BeginInteractiveRo mdrRoute Enter Route point


utePointsEditing model editor for
given route

BeginInteractiveQui mdrRoute Enter Quick


ckRouting Routing model
editor for given
route

© Copyright 1974 to current year. 2:112 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

mdrConnectionManager

Name Returns Arguments Description Remarks

CreateRouteFrom mdrRoute Array of For given path


ConnectionPoints mdrConnection described by
Points connection points
array create route

CreateConnection mdrConnect DBREF For given owner,


GraphFromOwner ionGraph create connection
graph

CreateConnection mdrRoute Array of For given array of


GraphFromBranc DBREF dbrefs, create a
hes connection graph

CreateConnection Array of Connect list of


ByGeometryFrom DBREF branches base on
branches their positions

CreateConnection DBRF Connect owning


sByGeometryFro branches element
mOwner based on their pos

GetConnectedAtt ARRAY of DBREF Connected attas


asToAtta DBREF from atta

mdrConnectionGraph

Name Returns Arguments Description Remarks

GetConnectionPoint mdrConnect mdrRoutePoint For given route


ionPoint point return
connection point

GetAllConnectionPo Array of Get connection


ints mdrConnect point list
ionPoints

mdrConnectionPoint

Name Returns Arguments Description Remarks

getRoutePoint mdrRoute Get route point


Point

getConnectedRoute mdrRoute Get connected


Point Point route point

© Copyright 1974 to current year. 2:113 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

getFirstConnection Real 0- head, 1- tail, 2-


Type mid, 3- free, 4-
none

getSecondConnecti Real 0- head, 1- tail, 2-


onType mid, 3- free, 4-
none

2.5.39 NUMERICINPUT Object

Members

Member Type Purpose


val REALGet/Set Value of the numeric input. Gets adjusted to
the nearest value in the range.
range REAL ARRAYGet/Set Range: Start, End and Step(>0) as reals.
ndp REALReadonly Integer number of decimal places to be
displayed. 0 means integer values.
modifiedEvents BOOLEANGet/Set Enable/disable modified events.
editable BOOLEANGet/Set Enable/disable editing of the displayed
value.

Table 2: 66. NUMERICINPUT Object Members

Methods

Method Name Result Purpose


setRange( !range, !ndp ) NO RESULT Set the range and number of decimal
places. !range is an array of REAL,
defining the min, max and step (>0)
values. !NDP<0 leaves the current
value unchanged.

Table 2: 67. NUMERICINPUT Object Methods

Command
The NumericInput gadget allows numeric input within a specified range, with given
granularity.
The Up/Down arrows control incrementing and decrementing the displayed value by the
specified increment, within the range. Additionally it is possible to type in the required value.
The number of decimal places can also be specified.
.-------<-------------------.
/ |
-- NUMERICinput gname -+- <fgtagw> ------------------|
+- <fgpos> -------------------|
+- <fganch> ------------------|
+- <fgdock> ------------------|

© Copyright 1974 to current year. 2:114 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

+- CALLback text -------------|


+- TOOLTIP text --------------|
+- CORE ----------------------* Core managed gadget
|-.-------<-------------------.
|/ |
+- RANGE val val -------------|
+- STEP val ------------------|
+- NDP int -------------------*
|
+- VALUE val -.
'-------------'- <vwid> -+- TOOLTIP text -.
'--------------'-->

Notes:
1. The tag text is displayed.
2. Default initial value is the minimum value of the range.
3. The range maximum is adjusted to be an integral number of steps.
4. NDP is the number of decimal places. If NDP is zero then all values will be integer.
5. Typed in values will be adjusted to the nearest valid value in the range.
6. The graph <vwid> allows the gadget width to be set specifically or in terms of other
gadgets on the form.
7. It is not possible to provide user formatting of the values displayed by the gadget.

Events and Callbacks


The Numeric input gadget supports SELECT and MODIFIED events, and users may
provide a callback method to service these events. Note that often no callback is required,
and the numeric input value is merely read and used by other gadgets of the form.
A SELECT event is raised whenever the user presses the ENTER key while the numeric
input display field has focus. Typically this happens after the user has typed in a required
value, but will also apply if the user enters the field after modifying the values using the up/
down arrows. The callback can be a simple or an open callback.
A MODIFIED event is raised for each modification of the displayed value using the up/down
arrows. Modified events are only reported if they are enabled and the user has provided a
PML open callback, as this allows differentiation from the SELECT events. The default state
is modified events disabled.

2.5.40 OBJECT

Method

Name Result Purpose


GetPathName() STRING Extracts the pathname for a
file in the PMLLIB
searchpath.

Table 2: 68. PML Object Methods

© Copyright 1974 to current year. 2:115 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.41 OPTION Gadget

Members

Name Type Purpose


DText ARRAY OF Set or get the entire list of
STRING display texts.
Get/Set
DText[n] STRING Get the display text of the
Get Only n'th option.
RText ARRAY OF Set or get the list of
STRING replacement texts.
Get/Set
RText[n] STRING Get the replacement text of
Get Only the n'th option.
Count REAL Get count of number of fields
Get only in the list.
Val REAL Selected field as integer.
Get/Set Zero implies no selection.
Setting val to zero will cause
an error if ZeroSel is not
specified.

Table 2: 69. OPTION Gadget Members

Methods

Name Result Purpose


Add(STRING Dtext) NO RESULT Append an entry to the drop
down list, where Dtext is the
text to display in the option
list.
Add(STRING Dtext, STRING Rtext)) NO RESULT Append and entry to the drop
down list, where Dtext is the
text to display in the option
list, and Rtext is the
replacement text for the new
field. If Rtext isn’t specified, it
will be set to Dtext by
default.
Clear() NO RESULT Clear gadget’s contents.
ClearSelection() NO RESULT Clears selection and returns
to default of first in list.

© Copyright 1974 to current year. 2:116 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


FullName() STRING Get the full gadget name,
e.g.'!!Form.gadget'
Name() STRING Get the gadget's name, e.g.
'gadget'
Owner() FORM Get owning form.
Select(STRING text, STRING value NO RESULT Select specified item in a list:
) text must be ‘Rtext’ or
‘Dtext’, and value is the item
to be selected.
Selection() STRING Get current selection’s
RTEXT.
Selection(STRING text ) STRING Get RTEXT or DTEXT of
current selection; text must
be ‘Rtext’ or ‘Dtext’.
SetPopup(MENU menu) NO RESULT Links menu with the gadget
as a popup.
Refresh() NOT Refreshes the display of the
RESULT gadget.
SetFocus() NO RESULT Move keyboard focus to this
gadget.
RemovePopup(MENU menu) NO RESULT Removes (popup) menu
from the gadget.
GetPickedPopup() MENU Returns the last picked
popup menu for the gadget.
Shown() BOOLEAN Get ‘shown’ status.
Type() STRING Get the gadget type as a
string.
Background() STRING Get Background Colour
Name.
Some gadgets do not
support this property in all
circumstances, e.g. gadgets
which are showing a pixmap.
Gadgets whose colour has
not been set explicitly, may
not have a colour with a
known colourname. In this
case an error is raised..
DisplayText( ) STRING Gets the text string currently
displayed in the Option
gadget's display field.

© Copyright 1974 to current year. 2:117 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


SetPopup( !menu ) NO RESULT Assigns a menu object as the
gadget's current popup.
Clear( !dtext ) NO RESULT Delete the field with the given
DTEXT string.
Clear( !fieldNumber ) NO RESULT Delete the specified field
number.

Table 2: 70. OPTION Gadget Methods

Command
The OPTION command defines an option gadget and specifies the position, tag or pixmap,
and callback text of the option (or list button) gadget. Also sets the width allowed for
displaying the list options when the gadget is selected.
The arrays defining the display texts and replacement texts for the gadget should be set in
the form's default constructor method.

Notes:
1. Option gadget's display text field is non editable, so doesn't need scroll width (syntax is
in fact in place for backwards compatibility).

.-------<-------.
/ |
>------ OPTion gname -+- <fgtagw> ------|
+- <fgpos> -------|
+- <fganch> ------|
+- <fgdock> ------|
+- CALLback text -|
+- TOOLTIP text --|
+- NORESELect ----|
+- ZEROSELection -|
+- CORE ----------* Core managed gadget
|
+- PIXmap <vshap> -.
'- <vwid> ---------+- TOOLTIP text -.
'----------------'-->

Figure 2:39. Syntax Graph -: Setting Up an OPTION Gadget

Reselection of the Selected Field can be Disallowed


There is a new keyword NORESELECT which disables UNSELECT and SELECT events
when the currently selected field is re-clicked with the mouse, for example:
option .o1 tagwid $!w |Choose| noResel width 5 tooltip 'select option'

ZeroSelection Property
Option gadgets have a ZeroSelection keyword (similar to that of single choice lists), which
allows it to support the notion of no current selection (previously a selection was
mandatory).
The syntax has been extended with the optional 'ZEROSELection' keyword, e.g.

© Copyright 1974 to current year. 2:118 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

option .choose tagWid 3 |Cars| . . . zeroSel noResel width 25 length 10

Behaviour

Note: It is bad practice to place one gadget on top of another. This may lead to gadgets
being obscured.

Unselected Events
Option gadgets support UNSELECT events. Typically when a field in the dropdown list is
selected, an UNSELECT event is raised for the previously selected field (if any) and then a
SELECT event is raised for the new field.

Notes:
1. UNSELECT events are not notified to PML unless an open callback has been specified
(so that SELECT and UNSELECT events can be differentiated).
2. Typically the UNSELECT action allows Appware to manage consequences of
deselection for any dependent gadgets or forms.
3. We recommend that you do not change the option gadget's selection programmatically
in an UNSELECT event.

2.5.42 ORIENTATION Object


This defines the orientation of a frame of reference (i.e. the directions of the XYZ axes) in
the frame of reference of that defined by an origin database reference. It does not define a
position.

Members

Name Type Purpose


Alpha REAL The Alpha component.
Get/Set
Beta REAL The Beta component.
Get/Set
Gamma REAL The Gamma component.
Get/Set
Origin DBREF The DB element which is the
Get/Set origin.

Table 2: 71. ORIENTATION Object Members

© Copyright 1974 to current year. 2:119 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods
None of these methods modifies the original object.

Name Result Purpose


Orientation( STRING) ORIENTATION Creates an ORIENTATION
from the values given.
Orientation( STRING, FORMAT ) ORIENTATION Creates an ORIENTATION
from the values given, in the
specified FORMAT.
EQ(ORIENTATION) BOOLEAN TRUE if ORIENTATIONS are
equal.
LT(ORIENTATION) BOOLEAN TRUE if ORIENTATION is
less than argument.
String(FORMAT) STRING Convert ORIENTATION to a
STRING.
WRT(DBREF) ORIENTATION Convert to a new
ORIENTATION with respect
to given DB element.
XDir() DIRECTION Return X axis direction of the
ORIENTATION as a
DIRECTION.
YDir() DIRECTION Return Y axis direction of the
ORIENTATION as a
DIRECTION.
ZDir() DIRECTION Return Z axis direction of the
ORIENTATION as a
DIRECTION

Table 2: 72. ORIENTATION Object Methods

© Copyright 1974 to current year. 2:120 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.43 PARAGRAPH Gadget

Members

Name Type Purpose


Val STRING The paragraph's textual
Get/Set content as a string.
If it has a pixmap then the
value will be the pathname of
the pixmap file as a string.
Background REAL Set or get Background
Get/Set Colour Number.
Background STRING Set Background Colour
Get/Set Name.

Table 2: 73. PARAGPRAPH Object Members

Methods

Name Result Purpose


AddPixmap(STRING) NO RESULT Adds pixmaps to be used for
AddPixmap(STRING, STRING) the unselected, selected and
AddPixmap(STRING, STRING, inactive states.
STRING)
FullName() STRING Get the full gadget name,
e.g.'!!Form.gadget'.
Name() STRING Get the gadget's name, e.g.
'gadget'.
Owner() FORM Get owning form.
SetPopup (MENU) NO RESULT Links the given menu with
the gadget as a popup.
RemovePopup(MENU) NO RESULT Removes the given popup
menu from the gadget.
GetPickedPopup() MENU Returns the last picked
popup menu for the gadget.
Shown() BOOLEAN Get ‘shown’ status.

© Copyright 1974 to current year. 2:121 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Type() STRING Get the GADGET type as a
string.
Background() STRING Get Background Colour
Name.
Some gadgets do not
support this property in all
circumstances, e.g. gadgets
which are showing a pixmap.
Gadgets whose colour has
not been set explicitly, may
not have a colour with a
known colourname. In this
case an error is raised..

Table 2: 74. PARAGPRAPH Object Methods

Command
The PARAGRAPH command defines a paragraph and specifies its position, dimensions (in
units of character widths and line heights), and, optionally tag text or a pixmap. Note that a
paragraph gadget is passive so it ’s callback is never used. A paragraph gadget can have a
tag, but it is not displayed.
You can define the PARAGRAPH to be either PML-controlled, or core-code controlled using
the gadget qualifier attribute control type, with values ‘PML” or “CORE”.

.--------------------<------------.
/ |
>-- PARAgraph gname -+-- <fgpos> ------------------------|
+-- BACKGround <colno> -------------|
+-- <fganch> -----------------------|
+-- <fgdock> -----------------------|
+-- CORE ---------------------------
* Core managed gadget
+- PIXMAP -+- filename -.
| ‘------------‘-<vshap>-->
‘- TEXT text -+-<vshap>-.
‘---------‘-->

Figure 2:40. Syntax Graph -: Setting Up a PARAGRAPH Object

Note:
• If a paragraph is to contain text, then its shape will be specified in grid units. The height
is the number of lines of text and the width is typically thought of as the number
characters required. This may be less that the actual string length, because the grid
width is the size of the font notional character width, which is typically smaller than the
largest characters in the font. You may need to specify a few extra grid units to
guarantee to fit variable strings.
• If a paragraph contains text, and no dimensions are specified, the result is a single line
of width (in grid units) equal to the number of text characters. This may not be long
enough to guarantee to fit the specific string, so you may nee to pad out with extra
spaces to avoid truncation.

© Copyright 1974 to current year. 2:122 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

• If your paragraph is to contain more than one line of text, you must specify a suitable
shape. The text, which can contain newline characters, will be justified in the area
given.
• If a pixmap is specified, the shape of the gadget must be defined and will be in pixels.
Remember to define the pixmap using the paragraph's AddPixmap() method or its
.Val member.
• If the paragraph is to have its contents modified then the text or pixmap file would
normally be specified in the form's default constructor method, rather than in the
gadget definition.
It is bad practice to place one gadget on top of another. This may lead to gadgets being
obscured.

2.5.44 PLANE Object

Members

Name Type Purpose


Orientation ORIENTATI Orientation of plane.
ON Get/Set
Position POSITION Origin of plane.
Get/Set

Table 2: 75. PLANE Object Members

Definition Methods
None of these methods modifies the original object.

Name Result Purpose


Plane(POSITION, ORIENTATION) PLANE Creates a PLANE with the
given POSITION and
ORIENTATION.
String() STRING Returns the plane as a string.
Direction(DIRECTION) DIRECTION Z component of the
orientation uses standard
PDMS method of maintaining
X and Y components of the
orientation.
Towards(POSITION) NO RESULT Modifies the direction (Z
component of the orientation)
member of the plane so it is
directed to the position.

Table 2: 76. PLANE Object Definition Methods

© Copyright 1974 to current year. 2:123 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Towards(POSITION)

Orientation

Direction(DIRECTION)
Z
Y

Position
X

Figure 2:41. PLANE Object Definition

PLANE Object: Methods that Return POSITIONs

Name Result Purpose


Intersection(LINE) POSITION Returns the intersection point
of the passed infinite line on
the plane definition.
Intersection(POINT POSITION Returns the intersection point
VECTOR) of the passed point vector on
the plane definition.
Intersections(ARC) ARRAY OF Returns the intersection point
POSITIONS of the passed arc on the
plane definition.
Intersection(PLANE, PLANE) POSITION Returns intersection position
of the three planes.
PointVector() POINT- Returns a point vector at the
VECTOR origin of the plane with a
direction equal to the normal
of the plane.
ThreeDPosition(XYPOSITION) POSITION Returns 3D position of the
XYPOSITION offset from the
plane origin.
Near(POSITION) POSITION Returns the nearest position
on the plane definition of the
passed position.

Table 2: 77. PLANE Object Methods that Return POSITIONs

© Copyright 1974 to current year. 2:124 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Intersection(LINE) Intersection(PLANE, PLANE)

Near(POSITION)
ThreeDPosition(XYPOSITION)

Figure 2:42. POSITIONs returned by PLANE Object Methods

PLANE Object: Methods that Return LINEs

Name Result Purpose


Line(REAL) LINE Returns a line of the given
length in the direction of the
plane normal.
Intersection(PLANE) LINE Returns the intersection line
of the passed plane on the
plane definition. The start
position of the line is the
origin of the plane definition
projected onto the passed
plane. The direction of the
line is from the start to the
position of the passed plane
projected onto the reference
plane. If the start and end
points are coincident, a line
of length 1000mm is returned
with the start position being
defined as described above.

Table 2: 78. PLANE Object Methods that Return LINEs

© Copyright 1974 to current year. 2:125 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Intersection(PLANE)

Figure 2:43. LINEs Returned from PLANE Object Methods

PLANE Object: Methods that Return XYOffsets

Name Result Purpose


XYOffset(Position) XYPOSITIO Returns the position,
N mapped onto the plane, in
term of an XY offset from the
plane origin.

Figure 2:44. PLANE Object Methods that Return XYOffsets

XYOffset(POSITION)

Figure 2:45. XYPositions Returned from PLANE Object Methods

© Copyright 1974 to current year. 2:126 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.45 PLANTGRID Object

Members

Name Type Purpose


Position POSITION Origin of the grid.
Get/Set
Orientation ORIENTATION Orientation of the grid.
Get/Set
XSpacings REAL ARRAY Array of spaces in the X
Get/Set direction, each space is
relative to the previous.
YSpacings REAL ARRAY Array of spaces in the Y
Get/Set direction, each space is
relative to the previous.

Table 2: 79. PLANTGRID Object Members

Methods
None of these methods modifies the original object.

Name Result Purpose


Plantgrid(POSITION, PLANTGRID Creates a grid with the given
ORIENTATION, ARRAY, ARRAY ) POSITION and
ORIENTATION, and the X
and Y spacings specified in
the arrays.
Xsize() REAL Maximum size in the X
direction.
Ysize() REAL Maximum size in the Y
direction.
OutofBounds(POSITION) BOOLEAN Returns whether point lies
within the grid boundaries.

Table 2: 80. PLANTGRID Object Methods

© Copyright 1974 to current year. 2:127 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Orientation Y Ysize()

Position Z

YSpacing

XSpacing Xsize()
X

Figure 2:46. Return Values from PLANTGRID Object Methods

2.5.46 PLATFORMGRID
PLATFORMGRID object is used for filling PLTFRM element with certain grid pattern.

Name Result Purpose


ASSIGN(PLATFORMGRID) NO RESULT Copies content of a
PLATFORMGRID object
into current instance
GRIDANGLE() REAL Returns the used grid
angle value
GRIDANGLE(REAL) NO RESULT Sets grid angle value

GRIDPOINT(REAL1, REAL2) NO RESULT Returns position of the


intersection of gridlines: X
(identified by given index -
REAL1) and Y (identified
by given index -REAL2)
GRIDPOSITION() POSITION Returns the grid's origin

GRIDXSPACINGS() ARRAY Returns the grid's spacing


pattern along X axe
GRIDXSPACINGS(ARRAY) NO RESULT Sets the grid's spacing
pattern along X axe
GRIDXYPOSITION() XYPOSITION Returns position of grid's
origin
GRIDXYPOSITION(XYPOSITION) NO RESULT Sets the position of grid

GRIDXYSIZE() REAL ARRAY Returns the size of


rectangle which contains
the grid
GRIDYSPACINGS() REAL ARRAY Returns the grid's spacing
pattern along Y axe

© Copyright 1974 to current year. 2:128 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

GRIDYSPACINGS(ARRAY) NO RESULT Sets the grid's spacing


pattern along Y axe
GROSSAREA() REAL Returns the gross area of
the grid
NETAREA() REAL Returns the net area of the
grid
ORIENTATION() ORIENTATION Returns the platform's
orientation
ORIENTATION(ORIENTATION) NO RESULT Sets the platform's
orientation for given value
PLANE() PLANE Return the plane definition
of platform grid. This is
equivalent of PLANE
method on PROFILE
object
PLATFORMGRID() PLATFORMGRID Create a platformgrid
object.
PLATFORMGRID(DBREF) PLATFORMGRID Creates a platformgrid from
DBREF. DBREF must be
PLTGRD or INTFRM
element. The outer
boundary is created from
owning PLTFRM routing
path (RPATH). Inner
boundaries are created
from PLOPEN elements
POSITION() POSITION Returns position of the
platform
POSITION(POSITION) NO RESULT Sets the grid's position

XYSIZE() ARRAY Returns the size of


rectangle (limits) which
contains the grid in platform
coordinate system

Methods that are performing operations on grid boundaries

Name Result Purpose


ADDINNERBOUNDARY(PROFILE) NO RESULT Adds new inner boundary to
the grid
CLEARINNERBOUNDARY() NO RESULT Deletes all inner boundaries

INNERBOUNDARIES() PROFILE ARRAY Returns array of inner


boundaries profiles

© Copyright 1974 to current year. 2:129 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

INNERBOUNDARIES(ARRAY) NO RESULT Replaces the inner


boundaries
INNERBOUNDARY(REAL) PROFILE Returns the profile of the
inner boundary
NUMBEROFINNERBOUNDARIES() REAL Returns the number of
grid's inner boundaries
OUTERBOUNDARY() PROFILE Returns the outer boundary
profile

Methods that return information about grids cells


Each cell is identified by index of two REAL.

Name Result Purpose


CELLORIENTATION(REAL1, ORIENTATION Returns an orientation of
REAL2) cell identified by given
index.
CELLPOSITION(REAL1, REAL2) POSITION Returns a position of cell
identified by given index
CELLPROFILE(REAL1, REAL2) PROFILE Returns a profile of cell
identified by given index
CELLSIZE(REAL1, REAL2) REAL ARRAY Returns the size of cell
identified by given index
(before trimming)
CELLXYPOSITION(REAL1, POSITION Returns position of the cell
REAL2) identified by given index
ISCELLTRIMMED(REAL1, BOOL Returns true if cell is
REAL2) trimmed
ISCELLUNTRIMMED(REAL1, BOOL Returns true if cell is
REAL2) untrimmed
ISCELLWITHIN(REAL1, REAL2) BOOL Returns true if cell is within
grid
LISTOFTRIMMEDCELLS() ARRAY Returns indices of all
trimmed cells
LISTOFTRIMMEDCELLS(REAL) ARRAY Returns indices of all
trimmed cells which area is
greater than given REAL
value
LISTOFUNTRIMMEDCELLS() ARRAY Returns indices of all
untrimmed cells

© Copyright 1974 to current year. 2:130 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

TOTALNUMBEROFCELLS() REAL Returns a number of cells


inside grid
TRIMMEDCELLSIZE(REAL1, ARRAY Returns the size of
REAL2) rectangle which contains
the cell identified by given
index

Methods that return information of gridlines


Lines are returned as ARRAY which first element is REAL representing line number and the
second is array of LINE objects.

Name Result Purpose


XGRIDLINES() ARRAY Returns array of grid's x-lines

XGRIDLINES(REAL) ARRAY Returns array of grid's x-lines


of given index
YGRIDLINES() ARRAY Returns array of grid's y-lines

YGRIDLINES(REAL) ARRAY Returns array of grid's y-lines


of given index

2.5.47 PMLReport Object


This object is used to run new reports created by the designer in batch. The interface is
available on the .NET ReportingAddin assembly which may be imported and used as
follows:
import 'ReportingAddin'
handle (1000,0)
endhandle
using namespace 'Aveva.Pdms.Reporting'
!!report = object PMLReport()
For example, to add parameters to a parameterised report
!argNames = object array()
!argNames[1] = 'param1'
!argValues = object array()
!argValues[1] = 'value1'
!!report.addParameters(!argNames, !argValues)
To add scope to a report for limiting the data to be displayed, overriding existing scope
defined in the report
! ancestorElements = '/ATEST,/BTEST'
!elements = ''
!!report.AddScope(!ancestorElements, !elements)

© Copyright 1974 to current year. 2:131 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

And to export report as csv file


!rep1 = object file('C:\rep1.repv')
!csv1 = object file('C:\rep1.csv')
!!report.exportAsCsv(!rep1.fullname(), !csv1.fullname())
Errors loading the report data may be logged by adding a handler to the response event.
The interface has the following methods:
Methods

Name Result Purpose


AddParameters(ARRAY No Result Adds parameters to report as 2
argNames, ARRAY arrays of argument names and
argValues) values, which will be used to
generate a parameterised report.
AddScope(STRING No Result Specify scope value to filter the data
ancestorElements, STRING given by comma separated list of
elements) ancestor elements and comma
separated list of elements.
AddScope(STRING No result Specify scope value to filter the data
ancestorElements, STRING given by comma separated list of
elements, ancestor elements, comma
BOOLEAN fully, separated list of elements, if limit
REAL minX, box is specified then whether it
REAL minY, should be considered fully or
REAL minZ, partially, to construct limit box minX,
REAL maxX,
REAL maxY, minY, minZ, maxX, maxY, maxZ.
REAL maxZ)
ExportAsCsv(STRING No Result Export report to csv file
reportFileName, STRING
destinationFilename)
ExportAsPdf(STRING No Result Export report to pdf file
reportFileName, STRING
destinationFilename)
ExportAsXlsx(STRING No Result Export report to Xlsx file
reportFileName, STRING
destinationFilename)
ExportAsXls(STRING No Result Export report to Xls file
reportFileName, STRING
destinationFilename)
InitializePrinterSetting No Result Initialise the printer settings
()
OpenReportManager No result Opens report manager

Print(STRING No result Print report with system defined


reportFileName) printer settings passing name of
report definition file

© Copyright 1974 to current year. 2:132 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

PrintDirect(STRING No Result Print report with user defined printer


reportFileName) settings
PublishToAVEVANET(STRING No Result Publishes report to AVEVA NET in
reportFileName, STRING form of pdf file
pdfFilename)
RemoveParameters() No Result Removes the parameters applied to
report
RemoveScope() No Result Removes the scope applied to
report

2.5.48 PMLSECURELOGIN
PMLSECURELOGIN object is used to control the encrypted command script generation
functionality.

Methods

Name Result Purpose


PMLSecureLogin( ) PMLSECUR Construct an instance of this object
ELOGIN
EmbedMacro(BOOLEAN) NO RESULT Embed the specified macro

HasLicenceToEmbedMacro( BOOLEAN Returns TRUE if EmbedMacro


) functionality is available.
Macro(STRING) NO RESULT Set the macro to run where
STRING specifies the full path of
the macro
MDB(STRING) NO RESULT Sets the login MDB

Password(STRING) NO RESULT Sets the login password

Project(STRING) NO RESULT Sets the login project

SaveToFile(STRING) NO RESULT Encrypt and save to specified path

User(STRING) NO RESULT Sets the login user

VerifyAfter(DATETIME) NO RESULT Verify after specified date

VerifyBefore(DATETIME) NO RESULT Verify before specified date

VerifyHostnames(ARRAY) NO RESULT Verify a number of host names


specified as an array of strings
VerifyWinusers(ARRAY) NO RESULT Verify a number of windows users
specified as an array of strings

Table 2: 81. PMLSECURELOGIN Object Method

© Copyright 1974 to current year. 2:133 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.49 PMLUSERLOGIN
PMLUSERLOGIN object allows generation of a project entry script only for the currently
logged-in user which means that it does not require entry of username and password.

Methods

Name Result Purpose


PMLUserLogin( ) PMLUSERLO Construct an instance of this
GIN object
Macro(STRING) NO RESULT Set the macro to run where
STRING specifies the full path of
the macro
MDB(STRING) NO RESULT Sets the login MDB

Project(STRING) NO RESULT Sets the login project

SaveToFile(STRING) NO RESULT Encrypt and save to specified path

VerifyNonInteractive(BOO NO RESULT If TRUE is passed, verify that no


LEAN) user interaction occurs after
execution of the generated macro

Table 2: 82. PMLUSERLOGIN Object Methods

2.5.50 POINTVECTOR Object

Members

Name Type Purpose


Direction DIRECTION Direction of point
Get/Set
Position POSITION Origin of point
Get/Set

Table 2: 83. POINTVECTOR Object Members

Definition Methods

Name Result Purpose


Pointvector( POSITION, POINTVECTOR Creates a POINTVECTOR
DIRECTION) with the given POSITION
and DIRECTION
String() STRING Returns a POINTVECTOR
as a string.

Figure 2:47. POINTVECTOR Object Methods

© Copyright 1974 to current year. 2:134 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Direction

Position

Figure 2:48. POINTVECTOR Object Definition

Methods that Return POINTVECTORs

Name Result Purpose


Offset(REAL) POINTVECTOR Returns the point vector
offset in its direction by the
passed distance
Towards(POSITION) POINTVECTOR Returns the point vector
with the original position
and the direction
constructed from the
position directed to the
passed position
Through(POSITION) POINTVECTOR Returns the point vector at
the intersection of the point
line with a plane normal to
the point line through the
passed position

Table 2: 84. POINTVECTOR Object Methods that Return POINTVECTORs

Offset(REAL)
Through(POSITION)

Towards(POSITION)

Figure 2:49. POINTVECTORs Returned from POINTVECTOR Object Methods

© Copyright 1974 to current year. 2:135 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods that Return POSITIONs

Name Result Purpose


Intersection(POINTVECTOR) POSITION Returns the intersection
position of the point vectors.
Intersection(LINE) POSITION Returns the intersection
position of the point vector
with the supplied line.
Intersection(PLANE) POSITION Returns the position at the
intersection of the point
vector with the supplied plane

Table 2: 85. POINTVECTOR Object Methods that Return POSITIONs

Intersection(PLANE)

Figure 2:50. POINTVECTOR Intersection with a PLANE

Miscellaneous Methods

Name Result Purpose


Intersections(ARC) ARRAY OF Returns the positions at the
POSITIONS intersection of the point vector with
the supplied arc.
Plane() PLANE Returns a plane with an origin
equal to the position of the point
vector and a normal direction equal
to the point vector direction.
Line(REAL) LINE Returns a line with a start position
equal to the position of the point
vector, a direction equal to the
direction of the point vector and a
length equal to the supplied length.

Table 2: 86. POINTVECTOR Object Miscellaneous Methods

© Copyright 1974 to current year. 2:136 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.51 POSITION Object

Members

Name Type Purpose


East REAL The East component
Get/Set
North REAL The North component
Get/Set
Up REAL The Up component
Get/Set
Origin DBREF The DB element that is the origin
Get/Set

Table 2: 87. POSITION Object Members

Methods

Name Result Purpose


Position(STRING ) POSITION Creates a POSITION at the
coordinates given in STRING.
Position(STRING, FORMAT) POSITION Creates a POSITION at the
coordinates given in STRING,
with the specified FORMAT.
Component(DIRECTION) REAL Magnitude of component in
specified DIRECTION.
EQ(POSITION) BOOLEAN TRUE if POSITIONS are the
same.
LT(POSITION) BOOLEAN TRUE if POSITION is less
than argument.
String(FORMAT) STRING Convert POSITION to a
STRING.
WRT(DBREF) POSITION Convert to a new POSITION
with respect to given DB
element.
Angle (POSITION, POSITION) REAL Returns the angle between
the passed two points about
the position object.

© Copyright 1974 to current year. 2:137 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


ArcCentre(POSITION, POSITION, ARC Returns an arc using arc
POSITION, DIRECTION, REAL ) centre technique. The
direction is the ‘normal
viewing’ direction.
ArcCentre(POSITION, POSITION, ARC Returns an arc using arc
POSITION, DIRECTION, REAL) centre technique. The
direction is the ‘normal
viewing’ direction. Please see
diagram for full explanation.

Table 2: 88. POSITION Object Methods (a)

POSITION A
POSITION X

RADIUS

POSITION B

Figure 2:51. !Arc = !posX.ArcFillet(!posA,!posB,!dir,!radius)

© Copyright 1974 to current year. 2:138 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


ArcFillet( POSITION, POSITION, ARC Returns an arc using arc
DIRECTION, REAL ) centre technique. The
direction is the ‘normal
viewing’ direction. Please see
diagram for full explanation.
ArcRadius( POSITION, POSITION, ARC Returns an arc using arc
DIRECTION, REAL, BOOLEAN ) radius technique. The
direction is the ‘normal
viewing’ direction. The
boolean selects the minor
(FALSE) or major(TRUE) arc.
Please see diagram for full
explanation.

Table 2: 89. POSITION Object Methods (b)

POSITION X

POSITION B
MAJOR = FALSE

RADIUS
POSITION A

Figure 2:52. !Arc = !posX.ArcRadius(!posA,!posB,!dir,radius,!major)

Name Result Purpose


ArcThru( POSITION, POSITION, ARC Returns an arc using arc
DIRECTION ) through 3 points technique.
The direction is the ‘normal
viewing’ direction. Please
see diagram for full
explanation.

Table 2: 90. POSITION Object Methods (c)

© Copyright 1974 to current year. 2:139 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

POSITION X
POSITION A

POSITION B

Figure 2:53. !Arc = !posX.ArcThru(!posA,!posB,!dir)

Name Result Purpose


ArcThru( POSITION, POSITION, ARC Returns an arc using arc
DIRECTION, REAL ) through 3 points and radius
technique. The direction is
the ‘normal viewing’
direction. Please see
diagram for full explanation.

Table 2: 91. POSITION Object Methods (d)

POSITION A

POSITION X

RADIUS

POSITION B

Figure 2:54. !Arc = !posX.ArcThru(!posA,!posB,!dir,!radius)

© Copyright 1974 to current year. 2:140 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Arc3Lines( LINE, LINE, LINE, ARC Returns a circle through the 3
DIRECTION ) line tangent points. The 'this'
position refers to the zone in
which the circle lies.
Direction(POSITION) BOOLEAN Returns the direction
between the position and the
supplied position
Distance(ARC) REAL Returns the distance between
the position and the nearest
point on the arc line of the
passed arc definition
MidPoint(POSITION) POSITION Returns the mid point
between the two positions
Near(POSITION, REAL) BOOLEAN Returns true if the passed
position is within the passed
distance from the position
object
Offset(DIRECTION, REAL) POSITION Returns a position offset by
the supplied length in the
supplied direction
Plane(POSITION, POSITION) PLANE Returns a plane in which
each of the supplied points
lie.
Distance(LINE) REAL Returns the distance between
the position and the nearest
point on the passed infinite
line definition
Distance(PLANE) REAL Returns the distance between
the position and the nearest
point on the passed plane
definition
Distance(POSITION) REAL Returns the distance between
the two positions
Line(POSITION) LINE Returns a line between the
two positions, starting at the
position object
MidPoint(POSITION) POSITION Returns the mid point
between the two positions
Near(POSITION, REAL) BOOLEAN Returns true if the passed
position is within the passed
distance from the position
object

© Copyright 1974 to current year. 2:141 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Offset(DIRECTION, POSITION Returns a position offset by
REAL) the supplied length in the
supplied direction
Plane(POSITION, POSITION) PLANE Returns a plane in which
each of the supplied points
lie.

Table 2: 92. POSITION Object Methods (e)

2.5.52 POSTEVENTS Object


The user may provide a PostEvents object, which should provide the methods described
below.
To use this feature, you must create a global object of this type and call it !!postEvents.
The method !!postEvents.postMark will be called every time an undoable is created,
after the undoable has been added to the undo stack.
This refers to all undoables, whether created by a MARKDB command, an undoable object
or within core functionality.
Similarly, the method postUndo will be called after an UNDO has occurred, and so on.
Each method will be passed a STRING object containing the name of the mark with which
the mark, undo, or redo is associated.

Methods

Name Result Purpose


postMark(STRING) NO RESULT Called after an undoable has
been added to the undo
stack. STRING is the
description text associated
with the undoable object.
postUndo (STRING) NO RESULT Called after an undo has
occurred. STRING is the
description text associated
with the undoable object.
postRedo(STRING) NO RESULT Called after a redo has
occurred. STRING is the
description text associated
with the undoable object.
postClearMark() NO RESULT Called after a clearMark
has occurred
postClearAll() NO RESULT Called after a clearAll has
occurred.

Table 2: 93. PML PostEvents Object Methods

© Copyright 1974 to current year. 2:142 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.53 PROJECT Object

Members

Name Type Purpose


Name STRING The name of the Project, up
to 120 characters.
Evar STRING Project environment variable,
e.g. SAM000

Table 2: 94. PROJECT Object Members

Methods

Name Result Purpose


Active() REAL Number of active users of the
project
Code() STRING Project code, three
characters, e.g. SAM
Description() STRING Project description, up to 120
characters.
Mbcharset() STRING Multibyte character set
number
Message() STRING Project message (information
about the project), up to 120
characters.
Name() STRING Project name
Number() STRING Project number, up to 17
characters.
Isglobal() BOOLEAN Whether project is a global
project.
Locations() ARRAY OF Return array of all Locations
LOCATION in Project
CurrentLocation() LOCATION Return true current location
Sessions() ARRAY OF Return array of all Sessions
SESSIONS (at the current location)
CurrentSession() SESSION Return current Session (at
the current location)
Dblist() ARRAY OF List of databases in the
DB project.
OBJECTS

© Copyright 1974 to current year. 2:143 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


MDBList() ARRAY OF Return array of all MDBs in
MDBS Project at current location.
UserList() ARRAY OF Return array of all USERs in
USERS Project at current location.
Macros() ARRAY OF Return array of all Inter-db
MACROS macros in MISC db in Project
at current location.
Messages() ARRAY OF Return array of all messages
STRINGS in MISC db at current
location.

Table 2: 95. PROJECT Object Methods

Commands

!ARRAY = PROJECTS $ Returns an array of all PROJECT objects


$ which have project environment variables
set.

!PROJECTVAR = CURRENT PROJECT $ Returns the current project object.

2.5.54 PROFILE Object

Members

Name Type Purpose


Position POSITION Origin of profile
Get/Set
Orientation ORIENTATION Orientation of profile plane
Get/Set
Pointer POINTER Definition of profile
Get Only

Table 2: 96. PROFILE Object Members

© Copyright 1974 to current year. 2:144 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


Profile(POSITION, ORIENTATION, PROFILE Creates a profile object. The
ARRAY) input ARRAY is an array of
LINEs, ARCs and
POSITIONs. Other array
member types will be
ignored. Array member must
be initialised correctly,
otherwise it will be ignored.
Profile(DBREF) PROFILE Creates a profile object from
a LOOP, PLOO, PALJ or
SPINE. Approximately from a
POGO, BOUN, DRAW.
3D linear geometry
(SPINE,BOUN, DRAW,PALJ)
should be in a single plane. If
not it is projected onto a
plane defined by the first few
points of the element.
Profile(DBREF1,DBREF2) PROFILE Creates a profile object from
SPRO or SLOO at DBREF1.
DBREF2 is the design
element referencing the
catalogue element containing
the catalogue primitive thus
providing its parameters.
Profile(PROFILE) PROFILE Creates a profile object which
is a copy of the given profile
Plane() PLANE Returns the PLANE definition
of the profile. This is
equivalent to the PLANE
method on LINEARGRID
object
IsClosed() BOOLEAN Return true if closed
IsValidClosed () BOOLEAN Returns true if the profile is
valid and could be drawn
correctly using GML, e.g.
there are no self-intersecting
edges
Sense() BOOLEAN True if anti-clockwise (on its
plane). Returns error if profile
is not closed

© Copyright 1974 to current year. 2:145 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Area() REAL Internal area of profile.
Returns error if profile is not
closed
Length() REAL Returns the complete length
of the profile.
IsCircle() BOOLEAN Returns true if profile is a full
circle.
IsFillet(REAL) BOOLEAN Returns true if edge specified
by REAL argument is a fillet.
A fillet must be an arc with a
significant angle that is
tangentially continuous with
its adjacent edges that are
lines, or arcs of larger radius.

Table 2: 97. PROFILE Object Methods

Figure 2:55. Finding the Length of the PROFILE Object

PROFILE Object Decomposition and Display Methods

Name Result Purpose


edges() ARRAY Returns array of lines and arcs
that define the profile. The
direction and sense of the lines
and arcs are important.
If the profile is a full circle only a
single full circle arc is returned
regardless of the composition
of the profile.
numberEdges() REAL Returns the number of edges
within the profile (= vertices-1)

© Copyright 1974 to current year. 2:146 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


edge(REAL) LINE/ARC Returns the profile element at
the passed index of the edges
array
dbWrite(DBREF) PROFILE Populates DBREF with
contents of the profile. If any
geometry already exists it is
replaced with the profile
geometry. The geometry
stored is that which is
appropriate to the database
element. The DBREF must be
one of LOOP, PLOO, PALJ,
SPINE, BOUN, DRAW, POGO.
Returns itself unmodified.
The owner of a LOOP or
PLOOP is repositioned to fit
with the profile. Other
geometry is positioned
correctly in the frame of
reference of its owner or
positioned ancestor.
Population of catalogue
geometry is not supported
draw(REAL1, REAL2, REAL3) PROFILE Draws the profile as a set of aid
lines and arcs. REAL1 is the
Segment number to draw to.
REAL2 sets the style of the
segment. REAL3 sets the
colour of the segment.. The
drawn graphics can be queried
and manipulated using AID
geometry functions.
LINE and ARC objects also
have the .draw method
implemented
Table 2: 98. PROFILE Object Decomposition and Display Methods

© Copyright 1974 to current year. 2:147 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

PROFILE Object Transformations and Modification Methods


These methods return a modified version of the profile definition:

Name Result Purpose


mirror(LINE) PROFILE Mirrors the boundary definition
about the passed line, when
mapped onto the boundary
plane
translate(REAL1,REAL2) PROFILE Offsets the boundary definition
in the XY of the boundary
plane with a shift of x of REAL1
and y of REAL2
rotate(REAL, POSITION) PROFILE Rotates the boundary definition
about the POSITION by the
given angle. Angle are anti-
clock-wise about the Z axes of
the boundary plane
close() PROFILE Closes the profile with an
additional edge (if necessary).
If ends are within a tolerance
the end point is adjusted
reverse() PROFILE Reverses the sense of the
profile and the order of the
edges
mergearcs(REAL1, REAL2) PROFILE Merge concentric contiguous
arcs into one up to a maximum
arc angle of REAL1 degrees
according to tolerance REAL2
Mergearcs() will remove
concentric back tracks in the
profile as well.
mergearcs() PROFILE Merge concentric contiguous
arcs into one.
mergelines(REAL) PROFILE Merge colinear contiguous
lines into one according to
tolerance supplied.
Mergelines() will remove
colinear backtracks in the
profile as well.
mergelines() PROFILE Merge colinear contiguous
lines into one.
mergepoints(REAL) PROFILE Remove coincident
consecutive points according
to tolerance supplied
mergepoints() PROFILE Remove coincident
consecutive points

© Copyright 1974 to current year. 2:148 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


polyline(REAL) PROFILE Replace arcs with a chordal
approximation to the tolerance
supplied
polyline() PROFILE Replace arcs with a chordal
approximation
projectArcs(REAL) PROFILE Removes all the arcs from the
definition, only leaving the
straight-line edges. Arcs with
angle less than the supplied
argument are ignored. Arcs
that are removed are replaced
by projected tangents meeting
at the polar position of the arc.
Arcs with angles approaching
180 degrees are split in half
Table 2: 99. PROFILE Object Transformations and Modification Methods

Figure 2:56. Transformations and Modifications by PROFILE Object Methods

PROFILE Object Methods that Query Position Relationships


These methods map the passed positions onto the profile plane, then use the resulting
position to determine the result returned:

© Copyright 1974 to current year. 2:149 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Near(POSITION) POSITION Returns the nearest position
on the profile, to the given
position projected onto the
profile plane.
Near(REAL,POSITION) POSITION The REAL argument is an
index to an edge in the
Profile. Returns the nearest
point on this edge to the
POSITION supplied. This is
the same as .near
(POSITION) but restricted to
a single edge.
NearEdges(POSITION) ARRAY Returns array of edge indices
of the nearest edges to the
given POSITION. The
returned edges may be any in
the profile. Edges will be
consecutive if nearest point is
a vertex.
IsWithin(POSITION) BOOLEAN Returns TRUE if the position
when mapped on to the
profile plane lies inside the
profile. The profile must be
closed.
IsWithout(POSITION) BOOLEAN Returns TRUE if the position
when mapped on to the
profile plane lies outside the
profile. The profile must be
closed.
OnProfile(POSITION) BOOLEAN Returns TRUE if the position
(mapped onto the profile
plane) lies on the profile
geometry.

Table 2: 100. Profile Object Methods that Query Position Relationships

© Copyright 1974 to current year. 2:150 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Figure 2:57. POSITION Relationships for PROFILE Objects

PROFILE Object Methods that Query Profile to Profile Relationships


These methods are used to check the relationship between PROFILEs.

Name Result Purpose


IsWithin(PROFILE) BOOLEAN True if the supplied profile
lies wholly within the profile
the object. Both profiles must
be closed.
IsWithout(PROFILE) BOOLEAN True if the supplied profile
lies completely outside the
profile object. Both profiles
must be closed.
IsIntersecting(PROFILE) BOOLEAN True if the supplied profile
intersects the profile object.
Both profiles must be closed

Table 2: 101. PROFILE Object Methods that Query Profile to Profile Relationships

© Copyright 1974 to current year. 2:151 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

PROFILE Object Intersection Methods


These methods return an array of results that define the intersection between an object and
the profile. Note that if an intersection point occurs exactly at the junction of two spans of the
profile, then two identical intersection points will occur in the array.

Name Result Purpose


intersections(LINE) ARRAY OF Returns an array of points
POINTS that are positions where the
line (or the projection of the
line into the plane of the
profile) intersects the profile.
All points on the extended
infinite line are returned.
intersections(ARC) ARRAY OF Returns an array of points
POINTS that are positions where the
arc (or the projection of the
arc into the plane of the
profile) intersects the profile.
The plane of the arc must be
parallel with the plane of the
profile otherwise an error will
occur. The points are
anywhere on the circle of the
arc (and not limited to be
between start and end)
intersections(PROFILE) ARRAY OF Returns an array of points
POINTS which are positions where the
two profiles intersect.. The
two profiles must be parallel
(or anti-parallel) to each other

Table 2: 102. PROFILE Intersection Methods

Figure 2:58. Intersections of PROFILE Objects

© Copyright 1974 to current year. 2:152 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

PROFILE Object Methods that Return New PROFILEs


These methods each return an array of new profiles. The new profiles are all created in he
same sense as the profile object, except that ‘holes’ are in the opposite sense. The profiles
must lie on the same plane in space, but not necessarily having identical positions and
orientations.

Name Result Purpose


intersect(PROFILE) ARRAY OF Returns array of the resultant
PROFILES intersection profiles
union(PROFILE) ARRAY OF Returns the union of the two
PROFILES profiles. Holes are returned
as separate profiles (in
reverse direction)
difference(PROFILE) ARRAY OF Returns the difference of the
PROFILES passed profile against the
profile definition
split(LINE) ARRAY OF Returns the resultant profiles
PROFILES from projecting the passed
line onto the profile and
splitting about that line
split(PLANE, BOOLEAN) ARRAY OF Returns the resultant
PROFILES boundaries from splitting the
profile on the line at the
intersection of the passed
plane and the profile plane.
The side is specified by the
supplied BOOLEAN. If it is
TRUE then only profiles in
the direction of the normal to
the passed plane are
created; if side is FALSE,
only those in the direction of
the anti-normal.

Table 2: 103. PROFILE Object Methods that Return New PROFILEs

© Copyright 1974 to current year. 2:153 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Figure 2:59. PROFILEs Returned from PROFILE Object Methods

2.5.55 RADIALGRID Object

RADIAL GRID Object Members

Name Type Purpose


Position POSITION Origin of the grid.
Get/Set
Orientation ORIENTATION Orientation of the grid.
Get/Set
Radii REAL ARRAY Radii of the grid.
Get/Set
Angles REAL ARRAY Angular spacing, from X axes
Get/Set (zero).

Figure 2:60. RADIALGRID Object Members

© Copyright 1974 to current year. 2:154 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

RADIALGRID Object Definition Methods

Name Result Purpose


Radialgrid( POSITION, RADIALGRID Creates a grid with the given
ORIENTATION, ARRAY, ARRAY) position and orientation, and
the angles and radii specified
in the arrays.

Table 2: 104. RADIALGRID Object Definition Methods

Orientation

Position
Z
Y
Angles

X
Radii

Figure 2:61. RADIALGRID Object definition (a)

RadialPosition(REAL, REAL)

Snap(POSITION)

Angle[1]

Snap(LINE)

Radius[1]
Radius[2] GridPoint(REAL, REAL)
Radius[3]

Figure 2:62. RADIALGRID Object Definition (b)

© Copyright 1974 to current year. 2:155 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.56 REAL Object


The Real Object is a number with integer and decimal (fractional) parts. It also can
represent a physical quantity so in addition to a value it can also have units, and the units
will be of that physical quantity (or Measure, or dimension). Reals with physical quantity
preserve this in all their functions, when used as arguments to other objects, and in
arithmetic expressions. The units have to be compatible with the operation being performed
(for example trignometrical functions will expect to operate on ANGLEs. In the following
methods comments are made about constraints and expectations regarding the dimensions
of the real values.
When a real is created it is normally, (but not always e.g. the convert units functions)
created in current working units of the quantity.

Methods

Name Result Purpose


Constructors
Real(BOOLEAN) REAL Creates a REAL from the given
BOOLEAN: TRUE = 1, FALSE = 0.
Real(BORE) REAL Creates a REAL from the given
BORE.
Real(STRING) REAL Creates a REAL from the given
STRING.
The String must include a number to
give value to the REAL If the STRING
also a unit qualifier appended to the
number the REAL is given the
dimension of the physical quantity and
its value will be converted to current
working units of that dimension. It will
also interpret an extended range of
feet and inch formats.
Real( STRING, FORMAT ) REAL Creates a REAL from the given
STRING in the specified format.
If the string contains no unit qualifier
the format defines the type of physical
quantity and the units of the number.
(or current units if format units not set).
The resulting REAL has current units
regardless of the format or input units.
If the conversion fails then the Format
object is used to provide alternative
unit qualifiers for the dimension (unit of
measure) and these are used to try
and interpret the value. This is similar
to the matching string functions.

© Copyright 1974 to current year. 2:156 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Real(REAL, UNIT) n/a creates an new REAL with the value of
the REAL argument (ignoring its units)
in the units of UNIT.
Unit Related Queries
Value() REAL return undimensioned real with same
value as original.
Dimension() MEASURE dimension (of measure) of the
physical quantity recorded by the real.
Unit() UNIT unit of measure of the quantity stored
Units() in the REAL.
AllDimensions() ARRAY of Set of all standard dimensions.
MEASURES
AllUnits() ARRAY of set of all named, standard Units.
UNITS
Unit Conversion Methods
Cast(UNIT) REAL Same as REAL(REAL,UNIT).
Returns a REAL with the value of the
REAL object (ignoring its units) in the
units of UNIT.
ConvertUnits(STRING) REAL Returns a REAL converted from
Convert(UNIT) original units to the units specified by
ConvertUnits(UNIT) the UNIT or STRING argument.
The STRING value must be able to be
interpreted as a valid unit.
If Object is undimensioned its value is
assumed to be in the DatabaseUnits
consistent with the unit specified by
the STRING or UNIT argument.
DBUnits() REAL Returns a real of same physical size,
but in database units.
CurrentUnits() REAL Returns a Real of the same physical
size, whose value is converted to be in
current working units and units of
current units.

© Copyright 1974 to current year. 2:157 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


CurrentUnits(STRING) REAL Returns a REAL of the same
CurrentUnits(UNIT) dimension as original and whose
CurrentUnits(MEASURE) value reflects the same physical size,
but whose value is measured in
current units.
If the original REAL has units - returns
a Real with units of current units. The
argument is ignored.
If the REAL has no units - The
argument used to qualify the units of
measure of the REAL. Its units are
that of the UNIT or STRING
argument. If the argument is a
MEASURE of name of a MEASURE
then the units are the appropriate
database units.
The returned REAL is returned only as
a converted Value. It has no units or
dimension (as had the original REAL).
Arithmetic and Logical Functions
ABS() REAL Absolute value (make value positive).
ACos() REAL ACOS. The real must be purely
numeric.
ALog() REAL ALOG. The real must be purely
numeric.
ASin() REAL ASIN. The real must be purely
numeric.
ATan() REAL ATAN. The real must be purely
numeric.
ATanT(REAL) REAL ATANT. The real must be purely
numeric.
Between(REAL, REAL) BOOLEAN TRUE if value lies in specified range
including values specified. All the reals
must be of the same or compatible
physical quantities and will be
interpreted in consistent units.
Boolean() BOOLEAN FALSE if value is zero, otherwise
TRUE.
Bore() BORE Convert to BORE (must be exact)
dependent on current BORE units.
Cosine() REAL COSINE. The real must be an angle,
or purely numeric.
Distance() STRING Convert to a distance using default
settings.

© Copyright 1974 to current year. 2:158 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Distance(BOOLEAN feet, STRING Convert to a distance :
BOOLEAN us, BOOLEAN to feet & inches if feet (otherwise
fraction, REAL precision, inches);
BOOLEAN zeroes)
to US format if us (otherwise PDMS
format);
use fraction if fraction (otherwise
decimals);
use precision as largest denominator
or precision decimal places;
output zeroes if zeroes (otherwise
them).
EQ(BORE) BOOLEAN Comparison dependent on current
BORE units. The two reals must be of
compatible quantities and are
compared in consistent units.
EQ(REAL) BOOLEAN TRUE if equal. The two reals must be
of compatible quantities and are
compared in consistent units.
GEQ(BORE) BOOLEAN Comparison dependent on current
BORE units. The two reals must be of
compatible quantities and are
compared in consistent units.
GEQ(REAL) BOOLEAN TRUE if greater than or equal to
another value. The two reals must be
of compatible quantities and are
compared in consistent units.
GT(BORE) BOOLEAN Comparison dependent on current
BORE units. The two reals must be of
compatible quantities and are
compared in consistent units.
GT(REAL) BOOLEAN TRUE if greater than another value.
The two reals must be of compatible
quantities and are compared in
consistent units.
INT() REAL Convert to whole number, rounding
down.
LEQ(BORE) BOOLEAN Comparison dependent on current
BORE units. The two reals must be of
compatible quantities and are
compared in consistent units.
LEQ(REAL) BOOLEAN TRUE if less than or equal to another
value. The two reals must be of
compatible quantities and are
compared in consistent units.
LOG() REAL LOG. Real should be numeric.

© Copyright 1974 to current year. 2:159 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


LT(BORE) BOOLEAN Comparison dependent on current
BORE units. The two reals must be of
compatible quantities and are
compared in consistent units.
LT(REAL) BOOLEAN TRUE if less than another value. The
two reals must be of compatible
quantities and are compared in
consistent units.
MODULO (REAL) REAL The remainder MODULO the given
REAL.
A.MODULO(P) has the value A - floor
(A / P) * P, where P cannot be zero.
NearestBore() BORE Convert to nearest BORE dependent
on current BORE units setting.
Nint() REAL Convert to nearest whole number (up
or down).
Power(REAL) REAL Raise value to power. If the original
real is of physical quantity the power
value should be integer.
Real() REAL Convert to REAL (in this case a null
operation).
SBetween (REAL,REAL) BOOLEAN TRUE if value lies in specified range
excluding values specified. All the
reals must be of the same or
compatible physical quantities and will
be interpreted in consistent units.
Sine() REAL SINE. The real must be an angle, or
purely numeric.
Sqrt() REAL Square root of value. If result is not a
supported unit of measure it will error.
String(STRING precision) STRING Convert to STRING with precision
specified as a STRING in the range
‘D0’ to ‘D6’.
String(FORMAT) STRING Convert to STRING using settings in
global FORMAT object. same process
of using format units and unit qualifiers
in the STRING as applied in
REAL(STRING, FORMAT).
Tangent() REAL TANGENT. The real must be an angle,
or purely numeric.

Table 2: 105. REAL Object Methods

© Copyright 1974 to current year. 2:160 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.57 REPORT Object


The report object is used to format the table object data for displaying the contents of a table
to the screen, forms or to file. Separating the formatting and extraction of the data from a
table allows different reports to be generated from the same basic table.
The report extracts the data from a TABLE and formats each of the columns according to
the associated COLUMNFORMAT object. You may optionally specify that only rows which
contain a specified MATCH string (which may or may not be case-dependent) should be
included it the report output.
The results may be extracted:
• all at once, using the Results() methods;
• a specified number of entries at a time, using the NextEntries()methods. Each
entry will consist of one or more lines;
• a specified number of lines at a time, using the NextLines()methods. This may
cause a partial entry to be returned at the end, but the next call to nextLines will fetch
the remainder of the entry.
The first ARRAY argument provided to these methods will contain a set of STRINGs, each
of which holds a Dtext row of data. If there is a second array argument, then this will contain
the corresponding Rtext, which will be the name of the DBREF object associated with that
row. For multi-line entries, the same Rtext value will be provided for each line.

Methods

Name Result Purpose


Report() Constructor.
Report(TABLE) Constructor that also sets the
table and column formats.
Table(TABLE) Sets the table to be used for
the report.
AddColumn(STRING key, Adds the column with the
COLUMNFORMAT, STRING heading) specified key to the report,
with the passed column
format. The argument
heading is the column
heading.
NextEntriesIndex(REAL position) Sets the position in the result
array to be used for the next
evaluation.
NextEntriesIndex(REAL n, STRING) Sets the position in the
matched result array to be
used for the next evaluation.
SetCaseMatch(BOOLEAN) Used in conjunction with the
'…MATCH' methods, defines
whether matching is case
sensitive.

© Copyright 1974 to current year. 2:161 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Initialise() Re-initialises the next
counter.
EvaluateTable() Re-evaluates on the table
primary key and re-sorts.
Keys() STRING Returns an ARRAY of
ARRAY STRINGS that are the
column keys used on this
report.
ColumnFormat(STRING key) COLUMN Returns the column format of
FORMAT the passed column key
ColumnHeading (STRING key) STRING Returns the heading of the
column identified by key.
Table() TABLE Returns the table used in this
report.
CaseMatch() BOOLEAN Queries whether the MATCH
STRING is case sensitive.
Set using CaseMatch
(BOOLEAN).
Results(ARRAY Dtext, ARRAY BOOLEAN Evaluates the report using all
Rtext) entries of the table (there
may be more than 1 line per
entry. If column formats
cause a wrap-around Rtext
will be repeated). The return
is TRUE if there are entries
to evaluate, FALSE if there
are no entries.
Both Rtext and Dtext must
exist; they will be updated
with the values.
Results(ARRAY) BOOLEAN As above but only Dtext is
evaluated.
ResultsMatch(STRING, ARRAY, BOOLEAN Similar to Results() but
ARRAY) only values matching the
string are put into the two
arrays.
ResultsMatch(STRING, ARRAY) BOOLEAN As above but only Dtext is
evaluated.

© Copyright 1974 to current year. 2:162 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


NextEntries(REAL n, ARRAY Dtext, BOOLEAN Evaluates the report using
ARRAY Rtext) the next n entries of the table
(there may be more than 1
line per entry, if column
formats cause a wrap-around
the Rtext will be repeated).
The return is TRUE if there
are entries to evaluate,
FALSE if there are no
entries.
Both Rtext and Dtext must
exist; they will be updated
with the next n values.
NextEntries(REAL n, ARRAY) BOOLEAN As above but only Dtext is
evaluated.
NextLines(REAL n, ARRAY Dtext, BOOLEAN Evaluates the report with the
ARRAY Rtext) next n lines of the table, if
column formats cause a
wrap-around the Rtext will
be repeated. The return is
BOOLEAN to indicate if there
are lines to evaluate.
Both Rtext and Dtext must
exist; they will be updated
with the next n values.
NextLines(REAL n, ARRAY) BOOLEAN As above but only Dtext is
evaluated.
NextEntriesMatch (REAL n, STRING BOOLEAN Similar to NextEntries() but
value, ARRAY Dtext, ARRAY Rtext) only values matching value
are put into the two arrays.
NextEntriesMatch(REAL n, STRING BOOLEAN As above but only Dtext is
value, ARRAY Dtext) evaluated.
NextEntriesIndex() REAL Returns the current position
in the array of entries.
NextLinesIndex() REAL Returns the current position
in the array of entries.
NextEntriesIndex (STRING) REAL Returns the current count of
the matched values array.
STRING is a key word
'MATCH'.

Table 2: 106. REPORT Object Methods

© Copyright 1974 to current year. 2:163 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.58 RTOGGLE Gadget

Members

Name Result Purpose


val BOOLEAN Current value true or false.
Get/Set
index REAL Get Index of radio button within
Only the group.
onVal STRING Associated selected value.
Get/Set
offVal STRING Associated unselected value.
Get/Set
visible BOOLEAN Visibility.
Get/Set
active BOOLEAN Active (greyed-in) status.
Get/Set
callback STRING Callback string.
Get/Set
tag STRING Tag text.
Get/Set

Table 2: 107. RTOGGLE Object Members

© Copyright 1974 to current year. 2:164 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


FullName( ) STRING Get the full gadget name,
e.g.'!!Form.gadget'.
Name( ) STRING Get the gadget's name, e.g.
'gadget'.
Owner( ) FORM Get owning form.
SetPopup( MENU ) NO RESULT Links the given menu with
the gadget as a popup.
RemovePopup( MENU ) NO RESULT Removes the given popup
menu from the gadget.
GetPickedPopup( ) MENU Returns the last picked
popup menu for the gadget.
Refresh( ) NO RESULT Refreshes the display of the
gadget.
Shown( ) BOOLEAN Get ‘shown’ status.
SetToolTip( STRING ) NO RESULT Sets or edits the text of the
TOOLTIP.
Type( ) STRING Get the gadget type as a
string.
Background() STRING Get Background Colour
Name.
Some gadgets do not
support this property in all
circumstances, e.g. gadgets
which are showing a pixmap.
Gadgets whose colour has
not been set explicitly, may
not have a colour with a
known colourname. In this
case an error is raised..

Table 2: 108. RTOGGLE Object Methods

Command
The RTOGGLE gadget (which is very similar to the TOGGLE gadget) is allowed only within
FRAMES. You can added them to a FRAME with the usual positioning and layout
commands. The RTOGGLE gadgets are implicitly numbered 1,2,3… as they are added.
The FRAME gadget can have an assigned callback, which is executed when the radio
group selection is changed, i.e. whenever the user selects an unselected radio-toggle. As
there is only a SELECT action supported, it can be either a simple callback or an open
callback.

© Copyright 1974 to current year. 2:165 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

.-------<------------.
/ |
>- RTOGgle gname -+- tagtext ------------|
+- CALLback text —-----|
+- <fgpos> ------------|
+- <fganch> -----------|
+- <fgdock> -----------|
+- TOOLTIP text -------|
+- CORE ---------------* Core managed gadget
|
+- STATES offval onval .
‘----------------------+- TOOLTIP text -.
‘----------------‘--->

Note: offval and onval are string values associated with the radio button states unselected
or selected.
Default values are onval = ‘ON’, offval = ‘OFF’.

In order to simplify the task of replacing the use of the (now removed) RADIO gadget by the
radio group Frame gadget, the RTOGGLE gadget’s UNSELECT events are raised only if a
PML open callback has been defined. This allows the simple replacement of TOGGLE
gadgets by RTOGGLE gadgets without the need to modify their callbacks.

2.5.59 Section Plane


The Section Plane object provides an interface for interrogating and modifying a Section
Plane in the 3D View in Draft. It can be used in conjunction with the
PMLSectionPlaneManager PML Object. In order to add a PMLSectionPlane to the 3D View,
the PMLSectionPlaneManager must be used.

Set-up Methods

Method Result Purpose


sectionPlane (DBREF) constructor Creates the Section Plane Object
with the given DBREF, which
must represent a SPLA, PPLA or
FPLA element

© Copyright 1974 to current year. 2:166 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Display Methods

Name Result Purpose


Redraw () No Result Redraw the plane in the 3D View.
A plane is infinite in two directions,
but is drawn with it's infinite edges
clipped to the edges of the current
drawlist. Therefore, if the plane is
moved, or if the drawlist changes,
the plane may need to be redrawn.
Highlight () No Result Temporarily highlight the Section
Plane in the 3D View.
Show (BOOLEAN) No Result Show/hide a plane in the 3D View.

setClipping (BOOLEAN, No Result Set/unset the clipping status of the


DBREF) section plane within the VIEW.
DBREF is the reference of the
VIEW element
switchClipside (DBREF) No Result Switch between standard and
reverse for which side of the
section plane the model will be
clipped. . DBREF is the reference
of the VIEW element
showClipItems No Result Highlight the items in the 3d view
(BOOLEAN, DBREF) that are in the clip list for this
section plane. DBREF is the
reference of the VIEW element
redefinePoints No Result Clear the points defining the
(DIRECTION) section plane, and start a user
interaction to redefine them.
DIRECTION specifies the
direction in which the lines
between the points are to be
extruded.
Colour (REAL) No Result Set the colour of the Section Plane
(Real must be a colour.code())
Translucency (REAL) No Result Set the translucency of the
Section Plane.
99 = transparent, 1 = opaque

Query Methods

Name Result Purpose


isValid () BOOLEAN Checks if the section plane object
is valid.
queryDbref () DBREF Returns the actual database
element.

© Copyright 1974 to current year. 2:167 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

queryShow () BOOLEAN Get the show of the Section Plane

queryClip () BOOLEAN Get the clipped value of the


Section Plane
queryType () STRING Get the types of the Section Plane.
(SPLA, FPLA, PPLA)
queryColour () INTEGER Get the colour of the Section
Plane
queryTranslucency () INTEGER Get the translucency of the
Section Plane.

Table 2: 109. Selection Plane Object Methods

2.5.60 Section Plane Manager


The Graphical Section Plane Manager object provides an interface for interrogating and
modifying Section Planes in the 3D View in Draft. It maintains a list of all PML SectionPlane
objects that have been added to the 3D View.

Set-up Methods

Method Result Purpose


SectionPlaneManager () constructor Creates the Section Plane
Manager Object

Display Methods

Name Result Purpose


initialise (BOOLEAN) No Result True - Initialises Section plane mode.
False - Uninitialise Section Plane
mode.
add (DBREF) No Result If DBREF is a view then Add all
Section Planes from a 2D View (Draft
VIEW element) to the 3D View.
If DBREF is a PLLB Add all Section
Planes from a 2D Library to the 3D
View. This includes all elements of the
following types:
• SPLA, PPLA, FPLA
If DBREF is a SPLA, PPLA, or FPLA,
then it will be added to the 3D View.
A SECTIONPLANE object for each
section plane added will be created
and added to the list.
add (SECTIONPLANE) No Result Adds the SECTIONPLANE object to
the 3D View.

© Copyright 1974 to current year. 2:168 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

add (STRING) No Result Creates a SECTIONPLANE object


from the element with the given name
and adds it to the 3D view.
remove (DBREF) No Result If DBREF is a SPLA, PPLA, or FPLA,
then it will be removed from the 3D
View. If the corresponding
SECTIONPLANE object is in the list, it
will be removed..
remove (SECTIONPLANE) No Result Removes the SECTIONPLANE object
from the 3D View and the list.
clear () No Result Clears all Section Planes from the 3D
View .
highlight (DBREF) No Result Temporarily highlights the Section
Plane with DBREF.
redraw (DBREF) No Result Redraw all planes in the 3D View. A
plane is infinite in two directions, but is
drawn with it's infinite edges clipped to
the edges of the current drawlist.
Therefore, if the plane is moved, or if
the drawlist changes, the plane may
need to be redrawn.
DBREF is the reference of the VIEW
element.
clip (BOOLEAN) No Result Clip/Unclip the 3D model (within the
3D View) with all the planes displayed
in the 3D View. SPLA items will not be
clipped.
show (BOOLEAN) No Result Show/hide all planes in the 3D View.
showClipping No Result Show/hide the side of each section
(BOOLEAN) plane that will be clipped
colour (REAL) No Result Set the colour of All Section Planes
(Real must be a colour.code())
translucency (REAL) No Result Set the transparency of All Section
Planes.
createPoints No Result Creates an SPLA with the given name
(STRING1,STRING2, STRING1 in the PLLB named
DIRECTION) STRING2, extruded in the given
DIRECTION.
endCreatePoints No Result Finish collecting points for the SPLA

© Copyright 1974 to current year. 2:169 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Query Methods

Name Result Purpose


query () ARRAY of Get all Section Planes in the 3D view
SECTIONPLANEs
querySelected () DBREF Return the DBREF of the selected
Section Plane.

Create Methods

Name Result Purpose


createSpla (name, SECTIONPLANE Creates a new SPLA element with a
library name, first specified name, which resides in a
point, second specific library. The first and second
point, extrusion points represent the locations of the
direction) first two WPOS elements. (These
will be created automatically by the
system with default names). The
extrusion direction must also be set.
The new SPLA will be drawn in the
3D view.
createFpla (name, SECTIONPLANE. Creates a new FPLA element with a
library name, specified name, which resides in a
point, normal specific library. The position and
direction) normal directions must be set. The
new FPLA will be drawn in the 3D
view.
createPpla (name, SECTIONPLANE. Creates a new PPLA element with a
library name, specified name , which resides in a
point) specific library. The position must be
set. The new PPLA will be drawn in
the 3D view.

Table 2: 110. Selection Plane Manager Object Methods

© Copyright 1974 to current year. 2:170 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.61 SELECTOR Gadget

Members

Name Type Purpose


Add(STRING Dtext) NO RESULT Append an entry to the list,
where Dtext is the text to
display in the option list.
Add(STRING Dtext, STRING Rtext)) NO RESULT Append and entry to the list,
where Dtext is the text to
display in the option list, and
Rtext is the replacement text
for the new field. If Rtext isn’t
specified, it will be set to
Dtext by default.
Val REAL Selected field number of a
Get/Set single choice list. (1,2,…)
Val ARRAY OF Selected field numbers of a
REAL multiple choice list. (1,2,…)
Get/Set
DText STRING Set or get the entire list of
ARRAY display texts.
Get/Set
DText[n] STRING Get the display text of the
Get Only n'th field.
PickedField REAL Last picked list field number.
Get Only

Table 2: 111. SELECTOR Object Members

Methods

Name Result Purpose


FullName() STRING Get the full gadget name,
e.g.'!!Form.gadget'.
Name() STRING Get the gadget's name, e.g.
'gadget'.
Owner() FORM Get the owning form.
Shown() BOOLEAN Get ‘shown’ status.
Type() STRING Get the GADGET type as a
string.

© Copyright 1974 to current year. 2:171 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Select(STRING text, STRING NO RESULT Select specified item in a
value) selector. text must be
‘Rtext’ or ‘Dtext’. value is
the field RTEXT or DTEXT to
be selected.
Select(STRING text, Array NO RESULT Select multiple choice
values) selector fields by value:
text must be ‘Rtext’ or
‘Dtext’. The values array
contains the RTEXT or
DTEXT of the fields to be
selected.
Selection(STRING text) STRING Get current selection: text
ARRAY OF must be ‘Rtext’ or ‘Dtext’.
STRING The value of Selection is
the RTEXT or DTEXT of the
selected field or fields.
SetPopup(MENU) NO RESULT Links the given menu with
the gadget as a popup.
SetFocus() NO RESULT Move keyboard focus to this
gadget.
SetToolTip(STRING) NO RESULT Sets or edits the text of the
TOOLTIP.
Refresh() NO RESULT Refreshes the display of the
gadget.
RemovePopup(MENU) NO RESULT Removes the given popup
menu from the gadget.
GetPickedPopup() MENU Returns the last picked
popup menu for the gadget.
Clear() NO RESULT Clear selector contents.
ClearSelection() NO RESULT Clear selections only.
Background() STRING Get Background Colour
Name.
Some gadgets do not
support this property in all
circumstances, e.g. gadgets
which are showing a pixmap.
Gadgets whose colour has
not been set explicitly, may
not have a colour with a
known colourname. In this
case an error is raised..

Table 2: 112. SELECTOR Object Methods

© Copyright 1974 to current year. 2:172 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Command
The SELECTOR command defines a database element selector gadget and specifies its
position, tag, and callback text. Also specifies whether the selector allows a single choice
only or multiple choices and defines the area (width and height) in which the displayed part
of the list will appear. It also allows you to specify which parts of the hierarchy are shown
and whether or not these are updated automatically during database navigation.

.-------<---------.
/ |
>- SELector gname -+-- <fgpos> --------|
+-- tagtext --------|
+-- <fganch> -------|
+-- <fgdock> -------|
+-- TOOLTIP text ---|
+-- CALLback text --*
+-- SINGle -.
+-----------‘- <vshap> DATAbase -+- MEMbers -.
| +- OWNers --|
| ‘-----------+-AUTO-.
| ‘------|
‘- MULTiple <vshap> DATAbase ---+- MEMbers ---------|
|- OWNers ----------|
‘-------------------|
|
.-------<-----------*
|
+-- TOOLTIP text --.
‘------------------‘->

Figure 2:63. Syntax Graph -: Setting up a SELECTOR Object

Default: Single choice. If DATABASE is not qualified, default is Members


plus Owners. Auto update off.

© Copyright 1974 to current year. 2:173 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.62 SESSION Object

Members

Name Type Purpose


UniqueID STRING Internal ID
Get/Set
Name STRING Session Name
Get/Set
Login STRING User’s login ID
Get/Set
Host STRING ID of the Machine running
Get/Set the session
Entered STRING Time of entering the session
Get/Set
LocationName STRING Name of Location for
Get/Set Session
IsRemote STRING True for Sessions at Remote
Get/Set locations
IsCurrent BOOLEAN TRUE for User’s own
Get/Set SESSION object

Table 2: 113. SESSION Object Members

Methods

Name Result Purpose


SESSION (STRING) SESSION Returns a SESSION object,
given a string containing a
session's Unique-id.
ConfirmID (STRING) BOOLEAN Returns TRUE if the
password specified by the
STRING is correct for the
currently logged-in user. (The
STRING value must include
the leading ‘/’ character).
Current() ARRAY OF List of Current DBs in the
DB MDB of the SESSION object.
Deferred() ARRAY OF List Deferred DB’s in the
DB MDB of the SESSION object.

© Copyright 1974 to current year. 2:174 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Location() LOCATION Return LOCATION to which
the Session applies. In a
non-Global project, returns
NULL or error.
MDB() MDB The current MDB of the
SESSION.
Mode() ARRAY OF List of potential access
STRING modes as ‘R’ , ‘RW’ or ‘N’ for
each of the current DBs.
Modified() BOOLEAN TRUE if database has been
modified.
Module() STRING Name of the current module.
Status() ARRAY OF List of current access modes
STRINGS as ‘R’ , ‘RW’ or ‘N’ for each
of the current DBs.
User() USER The user of this SESSION
object.

Table 2: 114. SESSION Object Methods

Note:
• The LocationName member and Location() method imply the location to which the
Session applies. This is normally the current location, except when Sessions at remote
locations have been requested. In a non-Global project, these members and methods
may be unavailable or unset.
• Some ADMIN Sessions in a Global project may apply to another location's system
database. This will be returned as part of the string returned by the Module() method,
if relevant. Other ADMIN Sessions may actually be Global Daemon Sessions. This is
returned as part of the string for the name member.
• Some SESSION object methods have only restricted availability:
• The Modified() method only applies to the current Session at the current
location.
• The Current(), Deferred(), Mode() and Status() methods will not be
implemented for remote Sessions and will return an error.
• The Location(), MDB(), User() and Module() methods are valid for remote
Sessions.
The last three methods will cause Daemon activity for Sessions at remote locations.
• It should be should be observed in using the MDB and USER objects returned by the
MDB() and User() methods for a remote Session. Methods on these objects will
access the currently open system database. Thus the appropriate location's system
database should be opened (using the ADMINISTER SYSTEM command) before
invoking methods on these remotely generated MDB and USER objects.

© Copyright 1974 to current year. 2:175 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Command

!SESSION = CURRENT SESSION $ Returns the current session object.

2.5.63 SLIDER Gadget

Members

Name Type Purpose


visible BOOLEAN Visibility.
Get/Set
active BOOLEAN Active (greyed-in) status.
Get/Set
callback STRING Callback string.
Get/Set
tag STRING Tag text - not displayed for
Get/Set this gadget.
val REAL Current value as integer.
Get/Set
background REAL Background Colour Number.
Get/Set
background STRING Set Background Colour Name.
only
range REAL Range Start, End and
ARRAY optional Step(>0) as integers.
Get/Set The start value may be less
than the end value. Array
size must be 2 or more.
tickstyle REAL Tick style as integer.
Get/Set
0 - none, 1 - right or bottom, 2
top or left, 3 - both 1 and 2

Table 2: 115. SLIDER Object Members

Note:
• The Val member represents the current value of the slider as a PML REAL (in fact
always an integer).
• The Range member allows the slider range and optionally the step value to be set or
queried. The granularity of the slider movement is determined by the specified step
increment, i.e. a move event is generated at each step increment within the slider’s
range. The range limits must each be an integral multiple of the step size (else an error
is flagged
The RESET action of a form (from reset, CANCEL or QUIT actions) will only reset the

© Copyright 1974 to current year. 2:176 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

slider current value not other slider properties. So if you redefine the range while a form
is displayed, and press the RESET button, the range will not revert to the previous
settings. You will have to do this from reset button’s callback and/or the form’s
CANCELCALL callback.
• Tick marks, if present, occur at every step value in the range.

Methods

Name Result Purpose


FullName() STRING Get the full gadget name,
e.g.'!!Form.gadget'.
Name() STRING Get the gadget's name, e.g.
'gadget'.
Owner() FORM Get owning form.
SetToolTip(STRING) NO RESULT Sets or edits the text of the
Tooltip.
Shown() BOOLEAN Get ‘shown’ status.
Type() STRING Get the gadget type as a
string i.e. 'SLIDER'.
Refresh() NO RESULT Refresh gadget image.
Background() STRING Get Background Colour
Name.
Some gadgets do not
support this property in all
circumstances, e.g. gadgets
which are showing a pixmap.
Gadgets whose colour has
not been set explicitly, may
not have a colour with a
known colourname. In this
case an error is raised..
SetFocus() NO RESULT Set keyboard focus to
gadget. Allows arrow keys to
drive slider.

Table 2: 116. SLIDER Object Methods

© Copyright 1974 to current year. 2:177 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Command

.-------<-------------------.
/ |
>-- SLIDER gname -+- tagtext -------------------|
+- <fgpos> -------------------|
+- CORE ----------------------| Core managed gadget
+- <fganch> ------------------|
+- <fgdock> ------------------|
+- BACKGround <colno> --------|
+- CALLback text -------------|
+- TOOLTIP text --------------|
+- VERTical ------------------|
+- HORIZontal ----------------*
|
| .-------<-------------------.
|/ |
+- RANGE int int -------------|
+- STEP int ------------------|
+- VALue int -----------------*
|
‘- <vshap> -+- TOOLTIP text -.
‘----------------‘-->

Figure 2:64. Syntax Graph -: Creating a SLIDER Object

Note: The user can specify the range as start, end and optional step and value integer
values.
The <vshap> graph allows the specification of the WIDTH and/or HEIGHT for sliders,
in grid units. The width must be specified for a horizontal slider, and the height must
be specified for a vertical slider. If the other dimension is not specified then a default
size will be assumed.
The tag text is not displayed for a slider gadget.

2.5.64 STRING Object


String.real() will convert the string to a number in the same way as REAL(string) does
including an extended set of feet and inch formats that can be interpreted. The resultant real
will be in current units consistent with the units in the string.

Methods

Name Result Purpose


After(STRING two) STRING Return sub-string following
leftmost occurrence of sub-
string two.
Before(STRING two) STRING Return sub-string before
leftmost occurrence of sub-
string two.
Block() BLOCK Make STRING into a BLOCK
for evaluation.

© Copyright 1974 to current year. 2:178 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Boolean() BOOLEAN TRUE if STRING is ‘TRUE’,
‘T’, ‘YES’ or ‘Y’;
FALSE if STRING is ‘FALSE’,
‘F’, ‘NO’,or ‘N’.
Bore() BORE Convert STRING to a BORE
(exact conversion - see also
NEARESTBORE).
Bore(FORMAT) BORE Convert STRING to a BORE
using the settings in the global
FORMAT object.
DBRef() DBREF Convert STRING to a DBREF.
DBRef(FORMAT) DBREF Convert STRING to a DBREF
using the settings in the global
format object.
Digits() REAL If String contains decimal
digits only, then return the
positive value represented,
else return value -1.0. This
handles the digit characters
from any Unicode supported
language.
Direction() DIRECTION Convert STRING to a
DIRECTION.
Direction(FORMAT) DIRECTION Convert STRING to a
DIRECTION using the
settings in the global format
object.
Empty() BOOLEAN TRUE for empty zero-length
string.
EQNoCase( STRING ) BOOLEAN Compare equal ignoring case,
with given string.
isDigits() BOOLEAN String is a contiguous string of
decimal digits only. This
includes the digit characters
from any Unicode supported
language.
isLetters( ) BOOLEAN String is a contiguous string of
letters only. This includes the
letter characters from any
Unicode supported language.

© Copyright 1974 to current year. 2:179 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


isLettersAndDigits( ) BOOLEAN String is a contiguous string of
letters and decimal digits only.
This includes the letters and
digits characters from any
Unicode supported language.
Length() REAL Number of characters in
string.
LowCase() STRING Convert string to lower case.
LT(STRING) BOOLEAN Comparison using ASCII
collating sequence.
Match(STRING two) REAL Location of start of sub-string
two within first string - zero
returned if not found.
MatchWild(STRING two) BOOLEAN TRUE if strings are the same.
STRING two may contain
wildcard characters:
·* for any number of
characters
·? for any single character.
MatchWild(STRING two, STRING BOOLEAN TRUE if strings are the same
multiple) as above but multiple
redefines the wildcard for any
number of characters.
MatchWild(STRING two, STRING BOOLEAN TRUE if strings are the same
multiple,STRING single) as above but multiple
redefines the wildcard for any
number of characters and
single also redefines that for
a single character.
Occurs(STRING) REAL Returns the number of
occurrences of the given
string.
Orientation() ORIENTATION Convert STRING to an
ORIENTATION.
Orientation(FORMAT !!format) ORIENTATION Convert STRING to an
ORIENTATION using the
settings in the global !!format.
Part(REAL nth) STRING Extract nth field from string
where fields are delimited by
space, tab or newline.
Part(REAL nth,STRING delim) STRING Extract nth field from string
where fields are delimited by
delim.

© Copyright 1974 to current year. 2:180 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Position() POSITION Convert STRING to a
POSITION.
Position(FORMAT !!format) POSITION Convert STRING to a
POSITION using the settings
in the global !!format object.
REAL() REAL Convert to a number.
Replace(STRING two,STRING STRING Replace all occurrences of
three) sub-string two with sub-string
three.
Replace(STRING two,STRING STRING Replace all occurrences of
three,REAL nth) sub-string two with sub-string
three starting at the nth
occurrence (or -nth
occurrence from the end).
Replace(STRING wo,STRINGt STRING Replace count occurrences
hree,REAL nth,REAL count) of sub-string two with sub-
string three starting at the nth
occurrence (or -nth
occurrence from the end).
Split() ARRAY Split string into an ARRAY of
STRINGS at space (multiple
spaces compressed).
Split(STRING elim) ARRAY Split string into an ARRAY of
STRINGS at delim (multiples
of delim not compressed).
String(BLOCK) STRING Creates a STRING from a
BLOCK expression.
String(BOOLEAN) STRING Creates a STRING equal to
TRUE or FALSE.
String(BOOLEAN,FORMAT) STRING Creates a STRING from a
BOOLEAN, as specified in the
FORMAT object.
String(BORE) STRING Creates a STRING from a
BORE.
String(BORE,FORMAT) STRING Creates a STRING from a
BORE, as specified in the
FORMAT object.
String(DB) STRING Creates a STRING containing
the DB name.

© Copyright 1974 to current year. 2:181 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


String(DB,FORMAT) STRING Creates a STRING containing
the DB name. The FORMAT
argument is required for
consistency by Forms and
Menus.
String(DIRECTION) STRING Creates a STRING from a
DIRECTION.
String(DIRECTION,FORMAT) STRING Creates a STRING from a
Direction, as specified in the
FORMAT object.
String(FORMAT) STRING Convert STRING to a
STRING using the settings in
the global FORMAT object.
String(MDB) STRING Creates a STRING containing
the MDB name.
String(ORIENTATION) STRING Creates a STRING from an
Orientation.
String(ORIENTATION,FORMAT) STRING Creates a STRING from an
Orientation, as specified in the
FORMAT object.
String(POSITION) STRING Creates a STRING from a
POSITION.
String(POSITION,FORMAT) STRING Creates a STRING from a
POSITION, as specified in the
FORMAT object.
String(PROJECT) STRING Creates a STRING containing
the PROJECT code.
String(REAL) STRING Creates a STRING from a
REAL.
String(REAL,FORMAT) STRING Creates a STRING from a
REAL, as specified in the
FORMAT object.
String(REAL,STRING) STRING Creates a STRING from a
REAL. The STRING
argument is present for
converting the number of
decimal places when given in
the obsolete format Dn.
String(SESSION) STRING Creates a STRING containing
the SESSION number.
String(TEAM) STRING Creates a STRING containing
the TEAM name.

© Copyright 1974 to current year. 2:182 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


String(USER) STRING Creates a STRING containing
the USER name.
Substring(REAL index,REAL STRING Returns a sub-string, nchars
nchars) in length, starting at index.
Substring(REALindex) STRING Returns a sub-string from
index to the end of the string
Trim() STRING Remove initial and trailing
spaces.
Trim(STRING options,STRING STRING Reduce multiple occurrences
char) of char to a single occurrence
throughout the STRING
(options = ‘M’).
Trim(STRING‘options’) STRING Remove initial spaces
(options =‘L’), trailing spaces
(options = ‘R’) or both
(options =’LR’).
UpCase() STRING Convert STRING to upper
case.
VLogical() BOOLEAN Evaluate STRING as a
BOOLEAN.
VText() STRING Evaluate STRING as a
STRING.
VValue() REAL Evaluate STRING as a
REAL.

Table 2: 117. STRING Object Methods

Compare Strings Ignoring Case


Examples:

Notes:
• The new construct if( !this.attrib.eqNoCase('Name') ) is more efficient than
comparisons of the form if( !this.attrib.upcase() eq 'NAME' ) particularly when the
check fails. It is also more reliable because it doesn't matter what is the case of the
value checked against.

© Copyright 1974 to current year. 2:183 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

• It may be worth revisiting such checks in the Appware and replacing them with the new
construction as this could fix undiagnosed defects and improve performance!

Is String Letters Only?


Example:

Is String Digits Only?


Example:

Get Value Of Digits Only String


Example:
!val = !strdgts.Digits()
q var !val
<REAL> 1234

Is String Letters And Digits Only?


Example:
!strmix= !strlet + !strdgts
q var !strmix.isLettersAndDigits()
<BOOLEAN> TRUE
q var !strmix.isLetters()
<BOOLEAN> FALSE
q var !strmix.Digits()
<REAL> -1
q var !strlet.isLettersAndDigits()
<BOOLEAN> TRUE
q var !strdgts.isLettersAndDigits()
<BOOLEAN> TRUE

© Copyright 1974 to current year. 2:184 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.65 STATE
The STATE object provides an interface for interrogating and modifying the status of modify
mode. It is only available to Design running in graphical mode.

Method Result Purpose


state () constructor

modifyMode () BOOLEAN Returns TRUE if modify mode is on;


else returns FALSE
modifyMode none Sets modify mode on or off
(BOOLEAN)
enableModifyMode () BOOLEAN Returns TRUE if modify mode is
enabled, else returns FALSE
enableModifyMode BOOLEAN If TRUE, then modify mode is
(BOOLEAN) enabled. If FALSE, modify mode is
disabled unless it is already on, in
which case this method has no effect.
The method returns TRUE if the
action is successful, else returns
FALSE.
.featureHighlight No Result If TRUE, then features (ppoints,
(BOOLEAN) plines, vertices, etc) are temporarily
highlighted in the 3d view as the
cursor passes over them. Setting this
to FALSE turns this feature off.

Table 2: 118. STATE Object Method

2.5.66 TABLE Object


The TABLE object is used to hold raw data in a manner that can be manipulated in a tabular
manner, i.e. as a spreadsheet. Each row of the table represents a DBREF, and is defined by
the primary key. The columns of the table contain information about the DBREF according
to the associated COLUMN object.
Sorting of the table is by the order of the columns and the sort criteria on the relevant
column. The formatting of the table data is via a REPORT object, which will allow the same
data to be represented in many different ways.

© Copyright 1974 to current year. 2:185 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


Table() Constructor (initialises all the
object settings)
Table(DBREF ARRAY, COLUMN ARRAY) Constructor that passes the
Primary Key as an ARRAY of
DBREFS and the columns as
an ARRAY of COLUMNS
Table(COLLECTION, COLUMNARRAY) Constructor that passes the
Primary Key as a
COLLECTION and the
columns as an ARRAY of
COLUMNS.
PrimaryKey(COLLECTION) User defined Primary Key
populated directly from a
COLLECTION.
PrimaryKey(ARRAY of DBREF) User defined Primary Key.
Column(REAL n, COLUMN) Replaces the -nth column of
the table.
ClearColumns() Clears all the columns from
the table.
Columns(COLUMN ARRAY) Sets up the columns from an
ARRAY of COLUMN objects.
Evaluate() Evaluates the complete table.
EvaluatePrimaryKey() Re-evaluates the Primary
Key collection.
PrimaryKey() DBREF Returns the primary Key of
ARRAY the table, reference list for the
columns of the table.
Columns() COLUMN Returns the column
ARRAY definitions. The order of the
columns is important when
sorting.
Cell(REAL column, REAL row) ANY Returns the contents of the
cell at the column and row.
Column(REAL, n) ARRAY Returns the contents of nth
column.
Row(REAL, n) ARRAY Returns the contents of nth
row.
Cell(STRING key, DBREF) ANY Contents of the cell at the
column and row.

© Copyright 1974 to current year. 2:186 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Column(STRING key) ARRAY Returns the contents of
column identified by key.
Row(DBREF) ARRAY Returns the contents of row
identified by DBREF.

Table 2: 119. Table -:TABLE Object Methods

2.5.67 TEAM Object

Members

Name Type Purpose


Name STRING Name of the TEAM, up to 32
characters.
Description STRING TEAM description, up to 120
characters.
Refno STRING STRING containing
Database reference number.

Table 2: 120. TEAM Object Members

Methods
None of these methods modifies the original object.

Name Result Purpose


DbList() ARRAY OF List of DBs owned by the
DB TEAM.
UserList() ARRAY OF List of USERS in the TEAM.
USER
TEAM(DBREF) TEAM Returns a TEAM object,
given a DBREF.
TEAM(STRING) TEAM Returns a TEAM object,
given a name or reference
number.

Table 2: 121. TEAM Object Methods

These methods may be used in the following ways

!D = OBJECT TEAM(!!CE)
!D = OBJECT TEAM(!!CE.Name)

© Copyright 1974 to current year. 2:187 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

!D = !!CE.TEAM()
!D = !!CE.Name.TEAM()

In all cases !!CE is assumed to be a DB database element and !!CE.Name is a STRING


object containing the element’s name.
These methods should assist performance improvements to AppWare by making it easier to
get from Database element to Object.

Command

!ARRAY = TEAMS $ Returns an array of TEAMs

2.5.68 TEXT Gadget

Members

Name Type Purpose


Val STRING Set or get the contents of
Get/Set STRING type TEXT field.
Val REAL Get/ Set or get the contents of
Set REAL type TEXT field.
Val BOOLEAN Set or get the contents of
Get/Set BOOLEAN type TEXT field.
Val 'AS Set or get the contents of the
DEFINED field according to the user
Get/Set defined type.
DataType STRING Get Get the type of the field.
Only
Echo BOOLEAN Get the Echo Status. No-
Get Only echo means that typed
characters will all appear as
asterisks.
Format STRING Get Get the name of the format
Only object associated with the
field.
Scroll REAL Get Get the Scroll Width.
Only
ValidateCall STRING Set/get user-defined
Get/Set validation callback.

© Copyright 1974 to current year. 2:188 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Type Purpose


Editable BOOLEAN Controls the ability to
Get/Set interactively edit the content
of a text field.

Table 2: 122. TEXT Object Members

Methods

Name Result Purpose


FullName() STRING Get the full gadget name,
e.g.'!!Form.gadget'.
Name() STRING Get the gadget's name, e.g.
'gadget'.
Owner() FORM Get owning form.
Clear() NO RESULT Clear gadget contents.
SetEditable(BOOLEAN) NO RESULT Sets the editable status for
the field.
SetFocus() NO RESULT Move keyboard focus to this
gadget.
SetToolTip(STRING) NO RESULT Sets or edits the text of the
TOOLTIP.
Refresh() NO RESULT Refreshes the display of the
gadget.
SetValue(ANY value, BOOLEAN NO RESULT Sets the value of the field,
validate) checking for valid type and
format. If validate is
TRUE, the validation
callback will be executed.
GetPickedPopup() MENU Returns the last picked
popup menu for the gadget.
Shown() BOOLEAN Get ‘shown’ status.
Type() STRING Get the gadget type as a
string i.e. 'TEXT'.

© Copyright 1974 to current year. 2:189 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Seteditable( STRING attrib, NO RESULT Specify value of named
REAL value) attribute. Currently the only
attribute supported is
HANDLEMODIFY which
determines when the text
MODIFIED events are fired.
It has values:
0 MODIFIED events off
(default).
1 Generate MODIFIED event
for first user modification.
2 Generate MODIFIED event
for all user modifications.

Table 2: 123. TEXT Object Methods

Command
The TEXT command defines a text field gadget which supports data values of a given type.
The following can also be specified; Gadget position, tag, size, callback, dock, anchor and
tooltip; maximum length of the string that may be scrolled in the gadget; the name of a
format object which says how a value is to appear as text or be interpreted; that text entered
is not echoed as typed, but appears as asterisks (for entering passwords, for example); that
the field contents can be seen but not edited.
You can define the TEXT object to be either PML-controlled, or core-code controlled using
the gadget qualifier attribute control type, with values ‘PML” or “CORE”.

.--------<-------------.
/ |
>-- TEXT gname --+-- <fgpos> -------------|
+-- CORE ----------------| Core managed gadget
+-- <fgtagw> ------------|
+-- <fganch> ------------|
+-- <fgdock> ------------|
+-- TOOLTIP text --------|
+-- CALLback text -------*
| .---------<---------.
| / |
‘--*-- WIDth integer ----|
+-- SCRoll integer ---|
+---NOEcho------------*
|
‘-- IS --+-- STRING --.
+-- REAL ----|
+-- BOOLEAN -|
‘-- word ----+- FORMAT gvarnm -.
‘-----------------+- TOOLTIP text -.
‘----------------‘-->

Figure 2:65. Syntax Graph -: Setting Up a TEXT Object

The IS word syntax allows for any user defined data type to be used, but this will only work
satisfactorily if a suitable FORMAT object is supplied.

© Copyright 1974 to current year. 2:190 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Note: The maximum string length (SCROLL integer) is 256 characters, and the default if
you do not specify a length is 132.
It is bad practice to place one gadget on top of another. This may lead to gadgets
being obscured.

2.5.69 TEXTPANE Gadget

Members

Name Type Purpose


Val ARRAY OF Get or set the contents of the
STRING text pane.
Get/Set
Count REAL Get Get the number of lines of
Only text in the gadget.

Table 2: 124. TEXTPANE Gadget Members

Methods

Name Result Purpose


FullName() STRING Get the full gadget name,
e.g.'!!Form.gadget'.
Name() STRING Get the gadget's name, e.g.
'gadget'.
Owner() FORM Get owning form.
Clear() NO RESULT Clear all lines from the gadget
Line(REAL ) STRING Get the text of given line
SetLine(REAL, STRING) NO RESULT Replace specified line number by
STRING.
CurPos() ARRAY[2] Get cursor position (line,
OF REAL character).
SetCurPos(REAL[2]) NO RESULT Set cursor position (line,
character).
SetCurPos(REAL, REAL) NO RESULT Set cursor position (line,
character).
SetEditable(BOOLEAN) NO RESULT Set edit status.
SetPopup(MENU) NO RESULT Links the given menu with the
gadget as a popup.
RemovePopup(MENU) NO RESULT Removes the given popup menu
from the gadget.

© Copyright 1974 to current year. 2:191 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


GetPickedPopup() MENU Returns the last picked popup
menu for the gadget.
SetToolTip(STRING) NO RESULT Sets or edits the text of the
TOOLTIP.
Refresh() NO RESULT Refreshes the display of the
gadget.
Shown() BOOLEAN Get ‘shown’ status.
Type() STRING Get the gadget type as a string.
Background() STRING Get Background Colour Name.
Some gadgets do not support this
property in all circumstances, e.g.
gadgets which are showing a
pixmap. Gadgets whose colour
has not been set explicitly, may
not have a colour with a known
colourname. In this case an error
is raised..
Table 2: 125. TXTPANE Gadget Methods

Command
The TEXTPANE command defines a text pane gadget and specifies its position and tag.
This is a multi-line text input field, allowing the user to enter a number of lines of text (either
directly or using cut and paste). Note that no callback string is allowed with this gadget, as
there is no way of knowing when a user has finished entering text.
The value of a TEXTPANE is its contents, held as an array of strings, where each line is an
element of the array.
You can define the TEXTPANE to be either PML-controlled, or core-code controlled using
the gadget qualifier attribute control type, with values ‘PML” or “CORE”.
The Textpane gadget definition has a new keyword 'FixChars' to force the use of a fixed
width font. This allows the text pane to be used to show simple reports laid out using the
space character.
The chosen font is Courier New (TrueType), because it has a reasonable selection of
character glyphs (nowhere near as extensive as the default variable width font Arial
Unicode MS).

© Copyright 1974 to current year. 2:192 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

.--------<--------.
/ |
>-- TEXTPane gname --+-- tagtext---------|
+-- <fganch> -------|
+-- <fgdock> -------|
+-- <fgpos> --------|
+-- FIXCHARS -------|
+-- CORE -----------* Core managed gadget
‘-- <vshap> --->

Figure 2:66. Syntax Graph -: Setting Up a TEXTPANE Object

Note: It is bad practice to place one gadget on top of another. This may lead to gadgets
being obscured.

2.5.70 TOGGLE Gadget

Member

Name Type Purpose


Val BOOLEAN Toggles value between
Get/Set TRUE and FALSE.

Methods

Name Result Purpose


AddPixmap(STRING file1, STRING NO RESULT Adds pixmaps to be used for
file2, STRING file3 ) the unselected, selected and
AddPixmap(STRING file1, STRING inactive states. The last two
file2) are optional.
AddPixmap(STRING file )
FullName() STRING Get the full gadget name,
e.g.'!!Form.gadget'.
Name() STRING Get the gadget's name, e.g.
'gadget'.
Owner() FORM Get owning form.
SetFocus() NO RESULT Moves keyboard focus to this
gadget.
SetPopup(MENU) NO RESULT Links the given menu with
the gadget as a popup.
RemovePopup(MENU) NO RESULT Removes the given popup
menu from the gadget.

© Copyright 1974 to current year. 2:193 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


GetPickedPopup() MENU Returns the last picked
popup menu for the gadget.
Refresh() NO RESULT Refreshes the display of the
gadget.
Shown() BOOLEAN Get ‘shown’ status.
SetToolTip STRING Sets or edits the text of the
TOOLTIP.
Type() STRING Get the gadget type as a
string.
Background() STRING Get Background Colour
Name.
Some gadgets do not
support this property in all
circumstances, e.g. gadgets
which are showing a pixmap.
Gadgets whose colour has
not been set explicitly, may
not have a colour with a
known colourname. In this
case an error is raised..

Table 2: 126. TOGGLE Object Methods

Command
The TOGGLE command defines a toggle gadget, and specifies its position, tag, and
callback text. Also allows you to specify different text strings for the default ON and OFF
states.
You can define the TOGGLE to be either PML-controlled, or core-code controlled using the
gadget qualifier attribute control type, with values ‘PML” or “CORE”.

.-------<------------.
/ |
>- TOGGLE gname -+- <fgtagw> -----------|
+- PIXMAP <vshap> -----|
+- CALLback text —-----|
+- <fgpos> ------------|
+- <fganch> -----------|
+- <fgdock> -----------|
+- TOOLTIP text -------|
+- CORE ---------------* Core managed gadget
+- STATES text1 text2 -.
‘----------------------+- TOOLTIP text -.
‘----------------‘--->

Figure 2:67. Syntax Graph -: Setting Up a TOGGLE Object

where text1 corresponds to the OFF setting and text2 corresponds to the ON setting.

© Copyright 1974 to current year. 2:194 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Note: It is bad practice to place one gadget on top of another. This may lead to gadgets
being obscured.

Default: Default text strings for the two toggle settings are ‘OFF’ and ‘ON’.
Default state when a toggle is first defined is ‘OFF’; i.e. button
raised.

Pixmaps associated with Toggle gadgets can be changed after the gadgets have been
displayed on a form.
Method syntax:
AddPixmap( !pixmap1 is STRING )
AddPixmap( !pixmap1 is STRING, !pixmap2 is STRING )
Where: !pixmap is a string holding the file pathname of the required .png file, e.g.
%pmllib%\png\camera.png
!pixmap1 shows the Un-selected state of the gadget, and pixmap2 shows the Selected
state.

Notes:
1. It is recommended that when you define the gadget you set its size to encompass the
largest pixmap which you will later add. Failure to do this may give rise to unexpected
behaviour.
2. Historically you could add a third pixmap which was used when the gadget was de-
activated. This practice is no longer necessary as the gadget pixmapped is
automatically greyed-out on de-activation.

2.5.71 UNDOABLE Object


This object allows you to add functionality to the undo and redo stacks.

Methods

Name Result Purpose


description(STRING) NO RESULT Adds description text to the
undoable
add() NO RESULT Marks the database with the
description text and adds this
undoable to the undo stack
endundoable() NO RESULT Marks the database again at the
end of the change.
undoAction (STRING) NO RESULT Specify a command to be
executed when this undoable is
taken off the undo stack

© Copyright 1974 to current year. 2:195 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


redoAction(STRING) NO RESULT Specify a command to execute
when this undoable is taken off
the redo stack.
clearAction(STRING) NO RESULT Specify a command to execute
when this undoable is cleared
without any associated undo/
redo being performed.

Table 2: 127. PMLUndoable Object Methods

Command
To use this object, first create an undoable object, and define the undoAction(),
redoAction() and clearAction() methods to define the execution strings.
Call the method add() to mark the database and add the undoable object to the undo
stack.
Make the set of changes that you may wish to undo, then call the method endundoable()
to mark the end of the changes.

2.5.72 UNIT Object

Member

Name Result Purpose


Constructors
Unit()
Unit(REAL) UNIT Creates a UNIT of which the
value of REAL is a (valid) enum
value, or is a negative
(compound) unit.
Unit(STRING) UNIT Creates a UNIT with String
equivalent to (in order)
Description, Name,
ComponentName, or Hashcode.

Table 2: 128. UNIT Object Members

Methods

Name Result Purpose


Name String Methods
Description() STRING Long description of unit, very often
String() same as Name()

© Copyright 1974 to current year. 2:196 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Result Purpose


Name() STRING Unit name used as qualifier for
solitary units
ShortName() STRING Short name used as qualifier for
component units. Very often same
as Name()
Hashcode() STRING Hash code of unit. If a compound
Ptype() unit returns 'COMPOUND', if
derived from component standard
units (e.g. Area units are Distance
squared) returns 'DRVD'.

General Queries
Enum() REAL Unique integer ID for this unit.
Positive if standard unit.
Negative if compound unit.
Factor() REAL Conversion factor to database
units.
UnitQualifier() STRING Unit qualifier of current units.
Dimension() MEASURE Dimension of unit.
IsStandard() BOOLEAN TRUE if a standard, single, unit.
FALSE if a compound unit (e.g.
kg/m3, m2)
IsNull() BOOLEAN TRUE if units are NONE.
AllDimensions() ARRAY of Set of all standard dimensions.
MEASURES
AllUnits() ARRAY of Set of all named, standard Units.
UNITS
IsImperial() BOOLEAN TRUE if an exclusively imperial
unit (e.g. inch, lb) or a non specific
unit (e.g. second, ohm, degree).
IsMetric() BOOLEAN TRUE if an exclusively metric unit
(e.g. mm, kg) or a non specific unit
used in metric situations.

Note: Derived units (which are units derived from current units of component dimensions
such as area units derived from current distance) and numeric units (no conversion
or unit qualifiers) have empty strings for name, description and qualifier. However
their hash codes are DRVD and NUMB so they can be created using a form as
object unit ('DRVD'). Current units can be set to this using measure.setUnits.
Additionally numeric current units can be set using measure.numeric().

© Copyright 1974 to current year. 2:197 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.73 USER Object

Member

Name Result Purpose


Name STRING The name of the User, up to
32 characters.
Description STRING User’s description, up to 120
characters.
Access STRING User’s access rights (FREE,
GENERAL, RESTRICTED).
Refno STRING STRING containing
Database reference number.

Table 2: 129. USER Object Members

Method

Name Result Purpose


TeamList() ARRAY OF List of TEAMs including this
USERS USER.
WorkingList() ARRAY OF List of working extract DBS
DB owned by a User.
OBJECTS
Password() STRING No value.
USER(DBREF) USER Returns a USER object,
given a DBREF.
USER(STRING) USER Returns a USER object,
given a name or reference
number.

Table 2: 130. USER Object Methods

These methods may be used in the following ways:

!D = OBJECT USER(!!CE)
!D = OBJECT USER(!!CE.Name)
!D = !!CE.USER()
!D = !!CE.Name.USER()

In all cases !!CE is assumed to be a DB database element and !!CE.Name is a STRING


object containing the element’s name.

© Copyright 1974 to current year. 2:198 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

These methods should assist performance improvements to AppWare by making it easier to


get from Database element to Object.

Command

!ARRAY = USERS $ Returns an array of USER objects in current project.

2.5.74 VERIFY
VERIFY object is used directly to verify that the executing user is on a list of approved users
and is running on an approved host computer, and is running within a given time period. If
the condition is not met the command script terminates immediately with a "Verification
error".

Methods

Name Result Purpose


Verify( ) PMLUSERLOGIN Construct an instance of this
object
After(DATETIME) NO RESULT Verify after the specified date

Before(DATETIME) NO RESULT Verify before the specified date

Hostname(STRING) NO RESULT Verify current computer


hostname matches single
hostname passed as STRING
Hostname(ARRAY) NO RESULT Verify current computer
hostname matches one of a set
of hostnames passed as ARRAY
of STRING
WinUser(STRING) NO RESULT Verify current Windows user
matches single username
passed as STRING
WinUser(ARRAY) NO RESULT Verify current Windows user
matches one of a set of
usernames passed as ARRAY of
STRING

Table 2: 131. VERIFY Object Method

2.5.75 ViewFinder
The ViewFinder object is to allow the Draft PML user to create a frame in the 3d view which
represents the view frame in the 2d view. Once drawn, the frame can be moved, rotated,
change its representation (but not its size). By manipulating the frame in the 3d view, the
user can modify the view parameters in the current drawing.

© Copyright 1974 to current year. 2:199 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Set-up Methods

Name Purpose
.viewFinder(DBREF) Creates a viewfinder object based on the parameters of the
Draft View. The input argument must be the dbref of a valid
View .
.view(DBREF) Sets the associated View object using the DBREF which
must be a valid view

Methods

Name Result Purpose


.redraw() No Result Redraws the box using current state
of View parameters
.update3d() No Result Regenerates frame and 3d model
view from the 2d view
.colour ( REAL) No Result Changes colour to the PDMS colour
number specified
.translucency(BOOLEAN) No Result Switches translucency on or off

.align() No Result Aligns the viewfinder frame with the


3d view direction
.lock(BOOLEAN) No Result Locks/unlocks the frame so it
cannot be moved
.dynamic(BOOLEAN) No Result If true, update design will
automatically occur whenever the
frame is moved
.hide() No Result Makes the frame invisible

.show() No Result Makes the frame visible. Also


expands the clipping planes to make
sure they include the frame.

Query Methods

Name Result Purpose


.valid() BOOLEAN Is the viewfinder valid. This will be
true if it was created with a valid
View, otherwise false
.view() DBREF Returns the dbref of the associated
view object
.position() POSITION Returns the position of the centre of
the viewfinder frame.
.direction() DIRECTION Returns the direction of the View
associated with the viewfinder

© Copyright 1974 to current year. 2:200 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

.size() ARRAY of Returns the size of the viewfinder


REAL frame ( as Xnnn Ynnn)
.dynamic() BOOLEAN Returns true if in dynamic mode

Table 2: 132. ViewFinder Object Methods

2.5.76 VIEW Gadget: ALPHA Views

Members

Name Type Purpose


Channel STRING Get or set the assigned
Get/Set channel.

Table 2: 133. VIEW ALPHA Object Members

Methods

Name Result Purpose


Clear() NO RESULT Clear all lines from the Alpha
TTY window.
Refresh NO RESULT Refreshes the display of the
gadget.
SetFocus() NO RESULT Set the keyboard focus
immediately to this Alpha
gadget.
removeRequests() NO RESULT Deletes the ‘requests’ channel
from the alpha view gadget,
and dissociates it from the
current Requests IO-channel if
necessary.
Background() STRING Get Background Colour Name.
Some gadgets do not support
this property in all
circumstances, e.g. gadgets
which are showing a pixmap.
Gadgets whose colour has not
been set explicitly, may not
have a colour with a known
colourname. In this case an
error is raised..

Table 2: 134. VIEW ALPHA Object Methods

© Copyright 1974 to current year. 2:201 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Command
The VIEW ... ALPHA command puts you into View Setup mode. You remain in View Setup
mode until you use the EXIT command.

.-------------------------<-------------------------.
/ |
(ALPha)--+- <vshap> -----------------------------------. |
+- CHANNEL -+- COMMANDS -----------------------| |
| ‘- REQUESTS -----------------------‘- NL -*
‘-- EXIT -->

Figure 2:68. Syntax Graph -22: Setting Up an ALPHA VIEW Object

2.5.77 VIEW Gadget: AREA View

Members

Name Type Purpose


Limits REAL Get or set limits box
ARRAY[4] [x1,y1,x2,y2].
Get/Set
Borders BOOLEAN Get or set borders ON (TRUE)
Get/Set or OFF (FALSE).
Background REAL Get/ Get or set background Colour
Set Number
Background STRING Set Set background Colour Name.
Only
Contents REAL Get or set User contents ID.
ARRAY[2]
Get/Set
Defcall STRING Get or set default interaction
Get/Set callback.
Height REAL Get Get view height.
Only
Highlight REAL Get/ Get or set highlight Colour
Set Number.
Highlight STRING Set Set highlight Colour Name
Only
Prompt GADGET Get or set User Prompt
Get/Set PARAGRAPH gadget.
Subtype STRING Get Get subtype of graphic view.
Only
Width REAL Get Get view width.
Only

Table 2: 135. VIEW AREA Object Methods

© Copyright 1974 to current year. 2:202 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose

Background() STRING Returns the highlight colour


as a name string.

Clear() NO RESULT Clear VIEW contents

Highlight() STRING Returns the highlight colour


as a name string.

Refresh() NO RESULT Refreshes the display of the


gadget

RestoreView(REAL storeNumber) NO RESULT Restores the saved VIEW


with the given store number.

SaveView(REAL storeNumber) NO RESULT Saves the current VIEW. The


number must be in the range
1 to 4.

SetSize(REAL width, REAL height) NO RESULT Set VIEW size.

Table 2: 136. VIEW AREA Object Methods

Command
The VIEW ... AREA command puts you into View Setup mode. You remain in View Setup
mode until you use the EXIT command.

.-------------------------<------------------------.
/ |
(AREa) --+- <vshap> -----------------------------------. |
+- PUT - <sgid> ------------------------------| |
+- LIMits <uval> <uval> - TO - <uval> <uval> -| |
+- SETColour - <colno> -----------------------| |
+- SETHighlight - <colno> --------------------‘- NL -|
+- <cursor> -----------------------------------------|
+- <border> -----------------------------------------|
+-- <pml> -------------------------------------------*
‘-- EXIT -->

Figure 2:69. Syntax Graph -: Setting Up an AREA VIEW Object

DRAFT where <sgid> is either CE (current element) or the name of a 2D graphical element
(e.g., a DRAFT SHEET, VIEW, LIBRARY, etc.) and <colno> is any valid DRAFT colour
definition.

© Copyright 1974 to current year. 2:203 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

And <cursor> is the syntax for selecting the cursor type, as follows:
>-- CURSortype ---+-- POINTER ----.
+-- NOCURSOR ---|
+-- PICK -------|
+-- PICKPLUS ---|
‘-- CROSSHAIR --‘-->

Figure 2:70. Syntax Graph -: Setting Up the Cursor Type

<border> allows control of zooming and panning:

>--- BORDers --+-- ON --.


‘-- OFF -‘--->

Figure 2:71. Syntax Graph -: Setting Up the Border

2.5.78 VIEW Gadget: PLOT View

Members

Name Type Purpose


Background REAL Get/ Get or set background
Set Colour Number.
Background STRING Set Set background Colour
Only Name.
Borders BOOLEAN Get or set borders ON
Get/Set (TRUE) or OFF (FALSE).
Contents REAL Get or set User Contents ID.
ARRAY[2]
Get/Set
Defcall STRING Get or set default interaction
Get/Set callback.
Height REAL Get Get view height.
Only
Highlight REAL Get/ Get or set highlight Colour
Set Number.
Highlight STRING Set Set highlight Colour Name.
Only
Prompt GADGET Get or set User Prompt
Get/Set PARAGRAPH gadget.
Subtype STRING Get Get subtype of graphic view.
Only
Width REAL Get Get view width.
Only

Table 2: 137. VIEW PLOT Object Members

© Copyright 1974 to current year. 2:204 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


Add(STRING) NO RESULT Add plot file with name given
by STRING. Replaces given
plot file if any.
Background() STRING Returns the background
colour as a name STRING.
Clear() NO RESULT Clear gadget contents
Highlight() STRING Returns the highlight colour
as a name STRING.
Refresh() NO RESULT Refreshes the display of the
gadget
SetSize(REAL width, REAL height) NO RESULT Set view size.

Table 2: 138. VIEW PLOT Object Methods

Command
The VIEW ... PLOT command puts you into View Setup mode. You remain in View Setup
mode until you use the EXIT command.

.-------------------------<------------------------.
/ |
(PLOT) --+- <vshap> -----------------------------------. |
+- ADD - plot_filename -----------------------| |
+- CLear -------------------------------------| |
+- SETColour - <colno> -----------------------| |
+- SETHighlight - <colno> --------------------‘- NL -|
+- <cursor> -----------------------------------------|
+- <border> -----------------------------------------|
+-- <pml> -------------------------------------------*
‘-- EXIT -->

Figure 2:72. Syntax Graph -: Setting Up a PLOT VIEW Object

where:
<colno> is any valid PDMS colour definition.
<cursor> is the syntax for selecting the cursor type, as in 2-19
<border> allows control of zooming and panning as in 2-20

© Copyright 1974 to current year. 2:205 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

2.5.79 VIEW Gadget: VOLUME Views

Members

Name Type Purpose


Background REAL Get/ Get or set Background
Set Colour Number
Background STRING Set Set Background Colour
Only Name.
Contents REAL Get or set User Contents ID.
ARRAY[2]
Get/Set
Defcall STRING Get or set default interaction
Get/Set callback.
Height REAL Get Get View Height.
Only
Highlight REAL Get/ Get or set Highlight Colour
Set Number.
Highlight STRING Set Set Highlight Colour Name.
Only
Prompt GADGET Get or Set User Prompt
Get/Set paragraph gadget.
Subtype STRING Get Get Subtype of graphic view.
Only
Width REAL Get Get View Width.
Only
Borders BOOLEAN Get or set Borders ON
Get/Set (TRUE) or OFF (FALSE).
Direction REAL Direction vector [dE,dN,dU].
ARRAY[3]
Get/Set
EyeMode BOOLEAN TRUE for Eyemode FALSE
Get/Set for Modelmode.
Limits REAL Limits box
ARRAY[6] [E1,E2,N1,N2,U1,U2].
Get/Set
Mousemode STRING 'ZOOM', 'PAN', 'ROTATE',
Get/Set WALK'.
Projection STRING ‘PERSPECTIVE’ or
Get/Set ‘PARALLEL’.

© Copyright 1974 to current year. 2:206 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Name Type Purpose


Radius REAL Get/ View Radius distance >0.
Set
Range REAL Get/ Range distance >0.
Set
Refresh NO RESULT Refreshes the display of the
gadget.
RestoreView REAL Get/ Restores view saved as
Set given view number.
SaveView REAL Get/ Saves view as given view
Set number, in the range 1 to 4.
Shaded BOOLEAN TRUE for shaded FALSE for
Get/Set wireline.
Step REAL Get/ Step size >0.
Set
Through REAL Through point [E,N,U].
ARRAY[3]
Get/Set
WalkThrough BOOLEAN TRUE for Walkthrough
Get/Set (equivalent to Eyemode).
LabelStyle STRING Set by specifying ‘ENU’ or
Get/Set ‘XYZ’. Default is ‘ENU’.
Bearing REAL Get/ View bearing
Set -180 <= bearing <=180
Elevation REAL Get/ View elevation
Set -180 <= elevation <=180

Table 2: 139. VIEW VOLUME Members

© Copyright 1974 to current year. 2:207 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

Methods

Name Result Purpose


Background() STRING Returns the BACKGROUND
colour as a name string.
Highlight() STRING Returns the HIGHLIGHT
colour as a name string.
SetSize(REAL width, REAL height) NO RESULT Set view size.
RestoreView(REAL storeNumber) NO RESULT Restores view saved as
given view number.
SaveView(REAL storeNumber) NO RESULT Saves view as given view
number.

Table 2: 140. VOLUME VIEW Object Methods

Command
The VIEW ... VOLUME command puts you into View Setup mode. You remain in View Setup
mode until you use the EXIT command.

(VOLume)--+-- LOok --+-- <dir> ---------------------.


| |-- THRough---. |
| |-- FROM -----| |
| ‘-- TOWards --+-- <pos> ----. |
| |-- <gid> ----| |
| ‘-- ID @ NL --‘--|
+-- ISOmetric --+-- value --. |
| ‘-----------‘-------------|
+-- PLAN ---------------------------------|
+-- ELEVation -- (one of N/S/E/W/X/Y) ----|
+-- CLIPping -----+-- ON --. |
| ‘-- OFF -‘--------------|
+-- CAPping ------+-- ON --. |
| ‘-- OFF -‘--------------|
+-- PERSPective --+-- ON --. |
| ‘-- OFF -‘--------------|
+-- WALKthrough --+-- ON --. |
| ‘-- OFF -‘--------------|
+--RADius --- value ----------------------|
+--STEP ----- value ----------------------|
‘--RANGE ---- value ----------------------‘--->

Figure 2:73. Syntax Graph -: Setting Up a VOLUME VIEW Object

Where:

© Copyright 1974 to current year. 2:208 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

<colno> is any valid DESIGN colour definition; either a colour description or a colour
number
<cursor> is the syntax for selecting the cursor type, as in 2-19
<border> allows control of zooming and panning as in 2-20

Default: Borders:ON; Shading OFF.


View direction:PLAN or LOOK DOWN.
Limits: AUTO (set to current view limits).

2.5.80 XYPosition Object

Members

Name Type Purpose


X REAL X component of 2D POSITION.
Get/Set
Y REAL Y component of 2D POSITION.
Get/Set

Table 2: 141. XYPOSITION Object Members

Methods

Name Result Purpose


XYposition() XYPOSITION Creates an XYPOSITION at
the given coordinates.
String() STRING Returns a XYPOSITION as a
STRING.

Table 2: 142. XYPOSITION Object Methods

© Copyright 1974 to current year. 2:209 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Summary of Objects, Members and Methods

© Copyright 1974 to current year. 2:210 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

3 Event Driven Graphics

Event Driven Graphics (EDG) describes the AppWare implemented EDG interface, which is
used as the interface between most applications/utilities requiring graphics interaction and
the graphic canvas.
It describes the Public methods and members of the objects used within the system and
how they interact with each other. Also it describes how the AppWare developer can use the
system, write their own handlers, etc. etc.
The EDG interface has been developed to allow a common interface for the AppWare
developer to setup the graphic canvas in an EDG mode, which is relatively simple and
easily extendible. This will allow the developer to concentrate on the development of their
own application without the need to know the underlying mechanism (core implementation)
of the EDG interaction handlers and system.
The system handles all the underlying maintenance of the current events stacked e.g.
associated forms, initialisation sequences, close sequences, etc.
The current implementation of the system has mainly been developed for interaction with
the 3D graphic views in the DESIGN module. However, the interface can be used with any
of the modules that use the same executable and the standard 3D graphic views.

Note: EDG does not form part of the formal definition of PDMS and is subject to change.
There is no AVEVA commitment to keep or maintain this interface in subsequent
versions of PDMS.

3.1 Overview
The EDG interface has been developed using the basic core functionality available in the
Forms and Menus system.
Even though the underlying core commands are very powerful allowing the developer great
flexibility and control of graphical picking, they only relate to a single view gadget, and so
would require the developer to write their own code to encapsulate the commands and
maintain the graphical views the event is to be applied to.

3.2 Purpose
What the EDG system does, is to control the event handlers in a more global sense, so that
the same pick sequence is applied to all current graphical design views.
It also handles the stacking of EDG events, allowing the user to temporary suspend one
event with another, then return to the previous, without the lost of data, etc.

© Copyright 1974 to current year. 3:1 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

3.3 Scope
The current implementation has been developed mainly for the DESIGN module using the
standard 3D Graphical Design views. The system can be used in any of the modules using
the "des" executable and the standard 3D Graphical Design views, e.g. IsoSpool,
PARAGON, etc. The current implementation it is not available in DRAFT.
Only the interfaces described can be classed as being supported in any form or manner.

3.4 Definitions
The following are abbreviations, acronyms and "buzz words" that may be used within this
document:
• EDG - Event Driven Graphics, this allow the application writer supply their own method
for interpreting the pick from the view gadget.
• Event Handlers - these are core defined handler that are used define the interaction
with the view gadget.
• Geometry Calculator - set of core functions, objects or methods used to derive
positional, angular, linear or directional data.
• GUI - Graphical User Interface, the forms and menus the user interacts with.
• Super Applications - these are applications/utilities, that are used for creating
elements, (sections, panels, etc.) or moving items, etc.
• Sub Applications - these are applications/utilities, used to derived data that may be
required when using the positioning tool kit, measure, construction aids, etc.
• edgCntrl - this is the global control object for the EDG system, the global variable for
the system within PDMS is !!edgCntrl.
• Packet - this is an object that defines a complete definition of an application/utility that
is to be placed into the event system.
• PickPacket - this is a definition of the pick sequence and types that are used by an
application packet.
• PickType - this is a definition of how an actual pick is interpreted, e.g. if a database
element is picked, is it decomposed into a basic graphical entity, point, line, arc or
plane or is it returned as a pointer to the database element.
• Pick - this is the definition of the pick on the graphical canvas, it is a stylised version of
the core event handlers.
• Public Members & Methods - these are the members and the methods that the
AppWare developer should use when defining objects within the system.

3.5 Target Users


EDG is intended for any user who wishes to write an application/utility that requires
interaction with the graphics design canvas (as supplied with the standard product).
It is assumed that the user wanting to use the EDG interface is familiar with both the
concepts of an Object Orientated language and PML II.

3.6 Superseded Functionality


The concept of event driven graphics is intended to replace the old suspend macro and pick
commands, i.e. the @ operator used with ID, IDP and IDPL and VAR <varid> PICK used to

© Copyright 1974 to current year. 3:2 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

return the picked element and pick vector. Bring the PML language up to date with other OO
languages and GUI tool kits.
However, the old suspend macro command are still available, but should not be used for
any new development, as it is intended to deprecate these commands at some later version.

3.7 Components
There are several components that the EDG system uses; each component of the system
usually has an equivalent object definition. Its members and methods, defining the data
required and actions that are pertinent to that component.
Several of components within the system can be loosely defined as being a type of object
factory; these allow new components to be added into the system, without the need to
modify the base EDG system objects.
There are two main types of components that the system uses, these are:

3.7.1 Main Components


Main components are used to define and control the actual EDG system and should only be
used in conjunction with the system.
The following table lists the main component names and gives a basic description of their
function within the system:

Object Description
edgCntrl Controls and contains all currently active events that are
registered in the system.
edgPacket Defines a application/utility that requires graphical picks.
edgPickPacket Defines the pick sequences and types of pick a packet
requires.
edgPickType Defines how a pick is to be interpreted.
edgPick Defines the basic graphic pick, cursor style, filter, etc.
edgPosCntrl Object for controlling all graphical position picks settings and
active working planes/grids.

There are several other components that the system uses. However, these are to be
classed as being private to the EDG system, therefore the AppWare developer should never
access the directory.

3.7.2 Secondary Components


Secondary components are used by the EDG system to derive information and in many
cases can be used independently of the system.

© Copyright 1974 to current year. 3:3 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

The following table lists the secondary components and object that are used by the system:

Object Description
edgTypes Object factory for defined "edg" database type object, the
interpreting how a database element is decomposed into
their basic geometrical type, point, line, arc or plane.
appMathLib Object factory for graphical application mathematical objects,
used to derive information about basic geometrical objects,
i.e. proportion, distance, etc.
edgPickData Return data from a graphical pick.
edgPositionData A processed version of the edgPickData object that is used
to extract position and basic geometrical data from a picked
element.

The system access many more components, either directly or indirectly, the above shows
only those that are extensively used in the interpretation of data.

3.8 Concepts
There are several concepts that need to be understood by the AppWare developer, to
understand why the system is written the way it has and how best to use the system.

3.8.1 Event Driven Graphics


Unlike the old style of graphical picking used by PDMS, which suspended the running of a
macro until a graphical element had been picked. EDG is a state in which the graphical view
gadget is put into, which defines criteria about how and what can be picked and how the
picked item is interpreted. When an item is picked, an action is carried out, i.e. a macro,
function or method is executed, similar to the callback on other gadgets types. What does
not happen, as with the old macro suspended mechanism, is that all other forms and
gadgets within the application, are still active.
What this means to the AppWare developer is that when writing a utility that uses the EDG
system, the action carried out when a pick happens, can only be completed once all the pick
information has been ascertained. Therefore, where an action requires two or more picks or
the picked information was incorrect, the action routine must either cache the information
until it has all the required pick information or it must instigate another event that setups the
system for the subsequent picks.
The AppWare developer should now consider the graphic view gadget as any other gadget,
i.e. on left-mouse-button up, the callback of the gadget will be actions.
What EDG allows from the user point of view, is that they can have the graphics view in a
EDG state, but they can still interact with any other form before they have completed the
actual pick task. Whereas, pre-EDG they would have to complete all the picks for a utility,
before anything else could be done.

3.8.2 Picking
Previous to the implementation of the EDG functionality, picking within the graphics view
had a limited scope, in that it was a means to navigate to an element in the database or a

© Copyright 1974 to current year. 3:4 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

way of identifying and returning some key features on an item in the graphics, i.e. ppoints or
plines.
What EDG allows now is a richer set of functions that allow the user to specify the type of
pick the user can perform, which can have predefined criteria applied to them and richer set
of return information that the user can use without having to derive the information within
their own application code.

3.8.3 Pick Sequence


When picking information from the canvas, a single pick cannot always describe what the
developer requires. Many instances require a standard and predictable sequence of picks to
define some sensible interaction. A simple example of this is a line created between two
points in space.
A more complex, but still a predefined sequence of picks, could involve different types of
picks, e.g. where a pick sequence requires a user to identify an item then pick a new
position where that item is to be positioned.
In some instances, what could be perceived as being a simple single pick sequence can
actually require several. The most obvious of these is a positioning picks, a simple position
at the origin of an item is only one pick, but a position at an intersection could be either two
or three picks depending on the items picked. In these cases, the numbers of picks are
handled from within the edgPickType object.

3.8.4 Event Packet


One of the underlying principles of the system is the event packet, this is a packet of
information that is used to define an operation in its entirety. These packets are self
contained, holding all the information about associated forms, operation criteria, actions
carried out on picking, etc. etc.
Once a packet has been defined and submitted to the system, then there should be no
requirement from external sources required for that packet to complete its task. Where
packets required run time data, the method for ascertaining this information should defined
within the packet. As event packets are run autonomously, all expected exceptions (errors)
must be handled internally.

3.8.5 Event Flow


The event system works such that at each level within the system, it is possible for an action
to be performed on the returned data. This data is automatically passed from the lower
routines up through the system, carrying out any predefined action on the data, then
passing it up to the next level. Only when all picks and actions are carried out is the data
passed to the user action routines within the event packet.

© Copyright 1974 to current year. 3:5 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

3.9 Event Control System (edgCntrl)


The control system is managed by the edgCntrl object; this contains and controls all the
data pertaining to the AppWare implementation of the EDG system. There are three main
components to the control system, these are:
• Active event - this is the currently active event that is applied to all the Design graphic
views the system knows about.
• Stacked events - these are all the events that are currently inactive but the system
knows about. Once the currently active event is completed or removed, the last event
to be added onto the stack will be made current.
• Design Graphic views - this is a register of all the graphic views that have been
registered for being maintained by the EDG system. Each time an event is added or
changed, all the view in the stack will be updated with the same data.
There is a single global instance of the edgCntrl object !!edgCntrl, this controls and
contains all data for the standard DESIGN applications.

© Copyright 1974 to current year. 3:6 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

3.9.1 Published Interface


The main components to the event control system that are available to the AppWare
developer can be split into three main sections:

Adding/Removing Events
Methods for adding and removing event packets to and from the event system:

Name Result Action


.add(EDGPACKET) BOOLEAN Add the passed event packet to the system,
making it active.
.remove(STRING) Removes the first event packets with the
passed event packet description from the
system.

Modifying Active/Stacked Events


Methods used to modify event packets within the event system:

Name Result Action


.setPrompt(STRING) Sets the primary prompt of the currently
active event.
.setPrompt(STRING, Sets the primary and secondary prompt of
STRING) the currently active event.
setStackPrompt(STRIN Sets the primary prompt of the stacked event
G, STRING) with the passed description.

© Copyright 1974 to current year. 3:7 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Viewing Stack Contents


Methods used to view the current contents for the event system:

Name Result Action


.viewStack() Displays the currently active and stacked
event in the system.
.viewStack(REAL) Display the event at the specified stack
position, zero will display the currently active
event.

All members and methods NOT defined within the table should be classed as being private
to the control object. Therefore, AppWare developer should never use them when writing
applications.

3.9.2 Add Packet


Before an event can be used, the event packet must be defined in its entirety. When an
event is added to the system, several tasks are performed:
• Remove equivalent packets from the system (prompts on major packets)
• Makes previous event packet's forms inactive
• Move currently active event packet onto the stack
• Applies currently defined picking filters to picks (where applicable)
• Applies new packet event handlers to all registered graphical views
If an event fails for any reason when it is added to the system, the .add method will return
false.
The AppWare developer should handle failures and inform the user why the event was not
added to the system. Where a packet does fail, the developer should pass any error
messages that they wish to use back via the public_error object !!error.
The following example is a simple adding of an event packet object edgPacket into the
event system:

-- Define Event Packet


!packet = object EDGPACKET()
!packet….
-- Add Packet to event system
if(!!edgCntrl.add(!packet).not()) then
!!alert.warning('Failed loading event packet (' & !!error.text
& ').')
endif
-- End
return

Any code in the macro, function or method which is after the event has been added into the
system, will be completed before the event is available to the user.

Note: Code after the .add method, SHOULD NOT modify any element of the packet
definition, i.e. forms, global variable, etc. as it will only modify the local definition, not
the one that has been added on the EDG system.

© Copyright 1974 to current year. 3:8 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

3.9.3 Remove Packet


The .remove method will remove the first event in the EDG system that has the passed
description. Where a utility has more than one event, then a remove must be used for each
event added into the system.
An event can be removed from the system in one of two ways, either forcibly by using the
.remove method, giving the event packet description or automatically as defined in the
event packet definition (see below).
When an event is removed from to the system, several tasks are performed:
• The .close method of event packet is executed
• Removes any associated forms declared against the packet's definition
• Reinstates the event from the top of the stack, making it the active event
If the event description passed to the remove methods does not exist in the event control
system, no error is produced.
The following is a closing method for a form that uses an event packet to perform some form
of picking from the graphic view:

-- Define Close Method


define method .close()
-- Remove event
!edgCntrl.remove('<packet description>')
-- Hide the form
!this.hide()
-- End
endmethod

Note: Where there is a form associated with an event packet, the form will automatically be
removed by the event system, when the packet is removed from the system.

3.9.4 Change Prompts


In several instances it may be necessary to change the prompt of an event, which is already
within the event system.
There are two methods available to change the currently active event prompt(s). These can
be used to change either only the primary prompt or the primary and secondary prompts of
the event (see below for definition of primary and secondary prompts).
The modifying of prompts should only be necessary where an event packet is recursive, i.e.
it reinstates itself into the system, and subsequent picks require a different prompt from the
first pick.
A typical example of this type of use is the creation of a SCTN (section), the first pick is the
"start" of the section, the second is the "end". After the first pick, the event pick data is
cached, on completion of the second pick, the section if created.
The following is an example of where a packet's action (a method on a controlling form)
requires the subsequent prompts to be indexed until 4 picks have been made:

© Copyright 1974 to current year. 3:9 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

-- Check if there are less than 4 elements in the cache


if(!this.cache.size() lt 4) then

-- Increment the prompt of the next pick


!!edgCntrl.setPrompt('Primary prompt',
!this.cache.size().string())

-- If there are 4 pick, process the data


else

-- Process the pick data


!this.processData()

-- Initialise Data
!this.cache.clear()

-- Redefine first prompt


!!edgCntrl.setPrompt('Primary prompt', 'pick first point')

endif

Note: Several of the predefined event packets, maintain the prompts in a more direct
manner, these mechanisms MUST NOT be copied by the developer, as they are
maintained by the standard product and could potentially change without notification.

A third method of the event system, allows a stacked events primary prompt to be changed.
This will mean that when the event is reinstated as the active event, the prompt will be
different, than when it was added to the stack.
This is basically the same as the setting of the primary prompt of the currently active event,
but changes the event by description. This is regardless of whether the event is active or
stacked.

3.9.5 View the Stack


There are two methods available to view the current state of the stack. These are only
intended for use whilst developing AppWare and should only be used via the command line.
The outputs are directly written to the command request window, and look something like:

© Copyright 1974 to current year. 3:10 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

!!edgCntrl.viewStack()

Currently Active EDG Packet

Description : Define a linear dimension


Key : editDimension
Type : measure
Priority : 1
Initialisation : None
Action : !!gphMeasure.setMeasure(!this.return[1])
Form : GPHMEASURE
Remove : false
Input Data : None

Pick Packet
Description : Standard Distance Measure

EDG Packet - Stack position [1]

Description : Standard Navigate


Key : stdNavigate
Type : navi
Priority : 10
Initialisation : None
Action : !this.moveToDBRef()
Form : None
Remove : false
Input Data : None

Pick Packet
Description : Standard Element Pick

3.9.6 Limitations and Restrictions


AppWare developers MUST always access the control object by only Published Interface
methods. All members and methods of the object not within this document are classed as
being private and MUST NOT be used by developer writing applications.

3.10 Event Packet (edgPacket)


The main controlling component of the event system, is the Event Packet. The Event Packet
is used to define an event in its entirety, from the actions carried out when the object is
added to the stack to the action carried out when it is removed from the stack.
The Packet should be considered as being the complete definition of the utility that requires
a sequence of picks, when fully defined it can then be added to the event control system.
Once the Packet is in the system, as the active event, it will then run autonomously until it
has completed the pick sequence or removed from the system, forcible.
The Event Packet object can be broken down into several components, these basically are:
• Administration data
• Actions

© Copyright 1974 to current year. 3:11 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

• Pick sequence definition


• Input Data
• Output Data
Currently the main interface into the object is via members, however, there are several
methods available for defining the most common pick sequences.

Administration Data
There are several administration members available within the event object.
Currently the only members that have any relevance and are used by the system are:

.description Description of the event packet which is used when adding or


removing the packet into/from the edg system.

All packets relating to the same utility should have the same
description. This makes the removing and maintenance of the
system a lot simpler.

.priority Defines the priority within in the edg system of the packet, with
respects to other packets of the same description.

The priority is a real number, zero being the highest priority. Where
a primary packet (priority = 0) is added to the system and there is
already another primary packet in the system. The user will be
prompted to whether they want to replace the one currently in the
system with the one being added.

Only major utilities should be flagged as being primary packets, e.g.


creating a section, element, etc. Subsequent packets relating to the
same utility (having the same description) should have a lower
priority.

Note: Only packets of the same priority are removed from the
system, lower priorities DO NOT get removed when a higher
one is added.

.remove Defines whether the event packet is automatically removed from


the system when all the picks within the pick sequences and
actions of the packet have been executed.

The member is a Boolean, true if the packet is to be removed false


if the packet is to be reinstated into the system.

Note: Where a packet fails, it will be removed from the system if


true, the system DOES NOT return to the beginning of the
event pick sequence.

.form Contains a pointer to the form that is to be shown when the event is
added into the system.

As the member is of "form" data type, the form MUST exist before it
is assigned.

© Copyright 1974 to current year. 3:12 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

When the event packet is added to the system, the form will
automatically be shown and any initialisation for the form will be run
as normal. The form will be shown at the right hand side of the
screen, slightly offset from the top. This allows any low level
controlling forms (especially the positioning control form) to be
positioned above the form.

When the event packet is removed from the system, the form will
automatically be removed from the system and any low level control
forms that the packet may require.

When another event is placed on the stack, the form will still be
active, however, the event picks will relate to the event packet at the
top of the stack. Any low-level forms that are not required by the
new event packet, will be left on the screen, but made inactive. This
shows that they are still required be a currently stacked event, but
does not allow the modification of the event packet until the event
has been reinstated at the top of the stack.

Actions
All actions within the event packet object are defined as strings, however, they MUST
represent either a standard command, PML function or PML object/form method. Old style
macros MUST NOT be used within the actions of the object.
The main actions that a packet can have are:

.initialisation The action that is carried out when the event packet is initially
added to the edg system.

When an event packet is reinstated into the system (this is where


the .remove members is false). The action will NOT be executed.

.action An action which is carried out when all the picks within the pick
sequence object (edgPickPacket) have been successfully
completed.

All data derived from picking in the sequence object are returned
through the system via the local variable !this.return (refer to
Output Data).

.close An action which is carried out just prior to the event packet being
removed from the edg system, whether after a successful
completion of the .action, forcibly by another action of the same
priority/type or using the escape key, when in the graphics canvas.

The action is carried out within the event packet object, therefore,
arguments that refer to !this relate to the members of the event
packet object itself.

Where a packet has a form associated with the packet (using the
.form member) then the close action should not attempt to hide the
form, as the system will automatically remove the form.

© Copyright 1974 to current year. 3:13 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

.continue An action which is carried out after the event packet has been
removed from the edg system, whether after a successful
completion of the .action or forcibly by another action of the same
priority.

As the action is carried out external to the event packet object, it is


not possible to access any data from the event packet, unless this
has been stored via other means, i.e. a global variable or form.

Note: This action member is NOT run if the event packet is


removed using the <esc> key on the Design graphics
canvas is used.

.escape An action which works the same as the .continue member,


however it is only carried out if the event has been removed from
the using the <esc> key, from the Design graphic canvas.

Pick Definition
The Pick Definition defines the number and types of picks required for the event packet
(refer to Pick Packet (edgPickPacket).
There are several predefined methods that allow the most commonly used event pick
sequences to be declared without the need to define them explicitly. Where a predefined
pick sequence does not exactly give the required picks, they can be used as a basis, then
modified to suite the requirements.
Where there is no event packet method defined that gives the required pick sequences and
pick types, then the developer will have to define the pick packet from first principles.
However, it is hoped that the currently available methods for defining the pick sequences
are adequate for most.
See below for a full list of the available methods (refer to Pick Sequence Methods).

Input Data
Where data is to be passed to an event packet, that is used either on initialisation or whilst it
is running, the data has to be stored in the objects .input member. This means the event
packet can run autonomously without the need to access data from external variables or
forms.
The input member is an ARRAY type, allowing any variable data type to be passed to the
system. Setting the input data is the same as defining any other array element:

-- Define input data for packet


!packet[1] = 'String'
!packet[2] = 20
!packet[3] = !!ce.position
!packet.append(10)
!packet.insert(1, !!ce)
.
.

When using the input data, the developer MUST make sure that they know the positions
and data type of the element of the array they are using.

© Copyright 1974 to current year. 3:14 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

As input member can only be accessed directly from within the system by the action
routines associated with the action members of the event object. The input variable must be
refereed to thus !this.input:

-- Initialisation Action (using first element of input)


!packet.initialisation = '!!form.eventInit(!this.input[1])
-- Action routine (using all input array and return pick data)
!packet.action = '!!form.eventAction(!this.input, !this.return)
-- Close action (using first element of input)
!packet.close = '!!form.eventClose(!this.input[1])

Note: Variables are passed by reference, therefore, changing the variable associated to the
input variable, will change the input variable.

Where a pick sequence requires multiple picked and the lower objects do not process the
pick data, then the return array will contain multiple entries, one for each pick.

Output Data
All the objects within the event picking mechanism have a .return members, this is used to
pass the data between the objects within the system. All the objects are of an ARRAY type,
as this allows any data type to be assigned to the elements.
When a pick sequence has completed, all the derived data ascertained from the picking, will
be returned into the .return member of the pick event object. Therefore, all .action routines
requiring the pick data MUST use the variable.
Similar to the input variable, the return variable can only be accessed directly from within the
system, and therefore must be declared in the argument list of the actions as !this.return.

-- Action routine
_!packet.action = '!!form.eventAction(!this.return)

In most instances, only the first element of the return array will be populated. This could be
either with another array or a specific object type. In these cases, the developer may want
only to pass the relevant element to the action routine:

-- Action routine
_!packet.action = '!!form.eventAction(!this.return[1])

Note: Variables are passed by reference, therefore, changing the variable associated to the
return variable, will change the input variable.

3.10.1 Published Interface


The main components of the object that the developer can use, can be broken into two
sections:

© Copyright 1974 to current year. 3:15 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Members
These are the published members for the object that the developer can used to define the
event packet object:

Name Type Action


.description STRING Description of the event packet.
.priority REAL Priority of event within the event packets of the
same description.
.initialisation STRING Action carried out when event packet is initially
added to the event system.
.close STRING Action carried out just before the event packet
is removed from the event system.
.action STRING Action carried out when all picks within the pick
sequence has been completed.
.continue STRING Action carried out after the event packet has
been removed from the event system.
.escape STRING Action carried out when the event packet is
removed from the system using the <esc> key
in the design graphic canvas.
.form FORM Form to be show when event packet is added
to the event system.
.pickPacket EDGPICKPACKET Definition of pick sequence and types required
for the event packet.
.remove BOOLEAN True if event is automatically removed when
the pick sequence has been completed.
False if event is to be reinstated, without the
.initialisation action being carried out.
.input ARRAY Contains information to be held local to the
event packet, which can be used during its
execution.

Pick Sequence Methods


There are several methods that define standard pick sequences, the following are the ones
currently supported:

Name Action
.navigate() Standard navigate pick.
.elementPick(<prompt>) Standard database element pick.
.plinePick(<prompt>) Standard pline pick.
.anyPick(<prompt>) Standard "any" pick.
.aidPick(<prompt>) Standard graphical aid pick.

© Copyright 1974 to current year. 3:16 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

.definePosition(<prompt>) Define basic positioning pick packet.


.defineCircle(<option>) Define circle definition pick packet.
.definePoint(<option>) Define point definition pick packet.
.defineLine(<option>) Define line definition pick packet.
.definePlane(<option>) Define plane definition pick packet.
.defineMeasure(<option>) Define a pick sequence for performing a measure.

The following are the standard available pick sequence methods and the event packet
settings that can be modified by the developer. Members not shown in the list, but which are
available for the developer, should be left as defined by the method, so that the pick
sequence works correctly:

Method Name Description


.navigate() Standard navigation pick, this will reposition the user at the
element picked.
Arguments Description

Packet Members Settings


.description Standard Navigate.
.priority 10.
.remove True.
.input
Return Array Description
None None.

Method Name Description


.elementPick(<prompt>) Standard element pick, allows a database element to be
picked from the design canvas.
Arguments Description
<prompt> Primary display prompt shown in the views information field.
Packet Members Settings
.description Standard Element Pick.
.priority 0.
.remove False.
.input

© Copyright 1974 to current year. 3:17 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Return Array Description


[1] edgPickData Standard event pick return object.

Method Name Description


.plinePick(<prompt>) Standard structural element pline pick.
Arguments Description
<prompt> Primary display prompt shown in the views information field.
Packet Members Settings
.description Standard Pline Pick.
.priority 0.
.remove False.
.input
Return Array Description
[1] edgPickData Standard event pick return object.

Method Name Description


.anyPick(<prompt>) Standard "any" pick, allows element, pline, ppoint or
graphical aid to be picked.
Arguments Description
<prompt> Primary display prompt shown in the views information field.
Packet Members Settings.
.description Standard ANy Pick.
.priority 0.
.remove False.
.input
Return Array Description
[1] edgPickData Standard event pick return object.

Method Name Description


.aidPick(<prompt>) Standard graphical aid element pick.
Arguments Description
<prompt> Primary display prompt shown in the views information field.

© Copyright 1974 to current year. 3:18 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Packet Members Settings


.description Standard Aid Pick.
.priority 0.
.remove False.
.input
Return Array Description
[1] edgPickData Standard event pick return object.

Method Name Description


.definePosition(<prompt>) Standard position pick, display position control form used to
define pick type selection and derive position filter.
Arguments Description
<prompt> Primary display prompt shown in the views information field.
Packet Members Settings
.description Basic Position.
.priority 0.
.remove False.
.input
Return Array Description
[1] edgPositionData Event picked position return object, contains all pick data and
derived position from the pick.

Method Name Description


.defineCircle(<option>) Method for defining a pick sequence to define a arc object
using the graphics.
Argument (Option) Description
3pnt Derives an arc passing through 3 position picks.
diameter3D Derives an arc whose diameter and X axes is through the
first two positional picks. The third positional pick defines the
relative Y axes of the arc definition.
radius3D Derives an arc which is centred about the first positional pick,
the second positional pick defines the radius and X-axes.
The third positional pick defines the relative Y axes of the arc
definition.

© Copyright 1974 to current year. 3:19 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

fixedRadius3D Defines an arc centred on the first position pick, where the
second and third positional pick defines the X and Y axes
respectively. Radius is specified via the automatically
displays input form.
fixedDiameter3D Defines an arc centred on the first position pick, where the
second and third positional pick defines the X and Y axes
respectively. Diameter is specified via the automatically
displays input form.
diameter2D Derives an arc lying on the active working plane, where the
diameter and X axes is through the two positional picks.
radius2D Derives an arc lying on the active working plane, centred
about the first positional pick, the second positional pick
defines the radius and X-axes.
fixedRadius2D Defines an arc lying on the active working plane, centred
about the positional pick. Radius is specified via the
automatically displays input form.
fixedDiameter2D Defines an arc lying on the active working plane, centred
about the positional pick. Diameter is specified via the
automatically displays input form.
fillet Defines an arc of radius specified via the automatically
displays input form, that lies tangentially to the two picked
lines.
tanTan Defines an arc of radius specified via the automatically
displays input form, that is tangential to the two picked arc
elements. The third pick (positional) define the centre side of
the arc.
pntTan Defines an arc centred on the first pick (positional) which is
tangential to the second pick (curved element).
fixedRadiusPntTan Defines an arc with radius supplied by the automatically
displayed input form, which lies on the line between the first
pick (positional) and the picked curved element.
fixedRadiusPntPnt Defines an arc centred on the first positional pick which is
tangential to the second pick on a curved element.
derive Derives an arc from the picked element.
tan3Lines Derives an arc which fits between the three lines picked.
Packet Members Settings
.description Defined by option.
.priority 0.
.remove True.
.input
Return Array Description
[1] arc Standard arc object.

© Copyright 1974 to current year. 3:20 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Method Name Description


.definePoint(<option>) Method for defining a pick sequence to define a pure position
object definition.
Argument (Option) Description
pnt Derives an position at the derived positional.
Packet Members Settings
.description Defined by option.
.priority 0.
.remove True.
.input
Return Array Description
[1] position Standard position object.

Method Name Description


.defineLine(<option>) Method for defining a pick sequence to define a line object
definition.
Argument (Option) Description
pntPnt Defines a line between the two positional picks.
angle Defines a line based on the first pick (line element), which
angled by value supplied via the input form the line towards
the second pick (positional). The third pick (positional)
defines the start of the line definition.
derive Defines a line derived from the picked element.
pntTan Defines a line from the first pick (positional) to the nearest
tangent point of the second pick (curve element).
tanTan Defines a line to the nearest tangent points on the two curves
picked.
bisect Defines a line that bisect the two lines picked, line is based
on the first line picked.
twoPlanes Defines a line that is at the intersection of the two picked
plane elements.
shortest Defies a line that is between the two closest points of the
graphical entities picked. Where the two items are parallel,
then the line is from the first picked position onto the second.
Where two items converge and the line is zero length, then
an unset line is returned.

© Copyright 1974 to current year. 3:21 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Packet Members Settings


.description Defined by option.
.priority 0.
.remove True.
.input
Return Array Description
[1] line Standard line object.

Method Name Description


.definePlane(<option>) Method for defining a pick sequence to define a plane object
definition.
Argument (Option) Description
3pnt Derives a plane passing through the three positional picks.
The first two define the centre and the X-axes, the third
defines the relative Y-axes.
Packet Members Settings
.description Defined by option.
.priority 0.
.remove True.
.input
Return Array Description
[1] plane Standard plane object.

Method Name Description


.defineMeasure(<option>) Method for defining a pick sequence to derive a
measurement.
Argument (Option) Description
distance Defines a line object that equates to the distance between
the two positional picks.
shortest Defines a line object that equates to the shortest distance
between the to graphical entities picked.
angle Defines an arc that represents the angle between the three
positional picks. The first pick defines the point about which
the angle is, the second and third, the points through which
the start and end of the angle passes.

© Copyright 1974 to current year. 3:22 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

lineAngle Defines a real that relates to the angle between the two
linear items picked.
Packet Members Settings
.description Defined by option.
.priority 0.
.remove True.
.input
Return Array Description
[1] line (distance) Standard line object.
[1] line (shortest) Standard line object.
[1] arc (angle) Standard arc object (radius is unit length of 1000mm).
[1] real (lineAngle) Real.

Note: When defining event packets using the above methods, the method should be
applied to the object before any other member is set, as the methods will overwrite
several of the event packet members.

3.10.2 Examples
The following are several examples and descriptions for setting up some basic packets
using the standard pick sequence methods.

Single Element Pick


The Single Element Pick defines an event packet that is totally self contained, it uses no
controlling form or action macros in its definition.
The packet definition is defined so that it remembers the element the user is at when the
packet is placed in the event system. For each pick of an element in the graphics view, the
user will be navigated to the picked element, when packet is removed from the event
system (using <esc> or being forced from the system by another event) the user will be
returned to the original element:

© Copyright 1974 to current year. 3:23 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

-- Define event packet


!packet = object EDGPACKET()

-- Define standard element pick


!packet.elementPick('Pick Element')

-- Remember the element when the packet was first place in the
-- event system
!packet.initialisation = '!this.input[1] = !!ce'

-- Move to the element picked


!packet.action = '!!ce = !this.return[1].item'

-- Set the close sequence, so that the user returns to the original
-- element
!packet.close = '!!ce = !this.input[1]

-- Add event packet to the system


!!edgCntrl.add(!packet)

Repeat Element Pick


The Repeat Element Pick defines an event packet that will keep picking elements, storing
the picked element in the input member of the packet. Then, when <esc> button is pressed,
the closing action will display all the elements in the input array.

-- Define event packet


!packet = object EDGPACKET()

-- Define standard element pick


!packet.elementPick('Pick Element <esc> to finish')

-- Retain the element picked in the input member


!packet.action = '!this.input.append(!this.return[1].item)'

-- Display the selected element on <esc>


!packet.close = 'q var !this.input'

-- Add event packet to the system


!!edgCntrl.add(!packet)

Again, this packet does not use other objects, functions or forms in its running. However, it
could be adapted to use objects, functions or forms when running. This could allow the
elements picked twice to be removed from the list, then some special action carried out on
all elements selected on the close of the packet.

© Copyright 1974 to current year. 3:24 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

The following is an example of a packet definition that will run functions that store the picked
element (in a global variable), then on completion, enhance all the elements selected.
When the event is placed into the event system, it will automatically initialise the global
variable that is used to store the picked elements:

Event Packet Definition

-- Define event packet


!packet = object EDGPACKET()

-- Define standard element pick


!packet.elementPick('Pick Element <esc> to finish')

-- Initialise the global store


!packet.initialisation = '!!xxxGlobalStore = ARRAY()'

-- Retain the element picked in the input member


!packet.action = '!!xxxStoreElement(!this.return[1].item)'

-- Tag the selected element on <esc> with their names


!packet.close = '!!xxxTagElements(|NAME|)'

-- Add event packet to the system


!!edgCntrl.add(!packet)

The following is the function definition that stores the picked element in a global variable,
enhancing the picked element. If the same element is picked twice, then it will be removed
from the list and un-enhance it:

© Copyright 1974 to current year. 3:25 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Store Element Function

-- Function Definition
define function !!xxxStoreElement(!element is DBREF)

-- Check if element exist in the global variable


!index = !!xxxGlobalStore.findFirst(!element)

-- Element already is in the store


if(!index.set()) then

-- Remove element from the list and un-enhance


!!xxxGlobalStore.remove(!index)
UNENHANCE $!<element>

-- Add element to the list and enhance


else
!!xxxGlobalStore.append(!element)
ENHANCE $!<element> COLOUR RED
endif

-- End of definition
endfunction

The following functions definition is used to tag "MARK" all the elements that are in the
global variable:

Store Element Function

-- Function Definition
define function !!xxxTagElements()

-- Loop through elements


do !i indices !!xxxGlobalStore

-- Tag Item
MARK $!!<xxxGlobalStore[$!<i>]>

-- Unenhance element
UNENHANCE $!!<xxxGlobalStore[$!<i>]>

enddo

-- End of definition
endfunction

© Copyright 1974 to current year. 3:26 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Simple Standard Position Pick (using only position data)


The Simple Standard Position Pick defines an event packet that uses the standard
positioning pick sequence. In this example, the packet definition has a controlling form (the
detail of the form is irrelevant) that the derived picked position writes it data to after each
pick.
When associating a form with an event packet, the developer MUST ALWAYS make sure
that the form has been build. This is because the form is passed by reference.
When the event packet is added to the edg system, the form will automatically be shown in
the top right hand corner of the screen (there is no control over this). In the case of the
positioning pick sequence, the positioning control form will also be displayed above the
event packets form.

-- Define event packet


!packet = object EDGPACKET()

-- Define standard element pick


!packet.definePosition('Pick Position')

-- Retain the element picked in the input member


!packet.action = '!!xxxForm.position(!this.return[1].position)'

-- Build form if required


if(undefined(!!xxxForm)) then
pml reload form !!xxxForm
endif

-- Associate form
!packet.form = !!xxxForm

-- Execute the forms tidy method on completion


!packet.close = '!!xxxForm.tidy()'

-- Add event packet to the system


!!edgCntrl.add(!packet)

It should be noted that there are several ways in which the event packet form can be closed:
• Form gadget, OK/Cancel/Dismiss button or Close on pull-down
• Close from the forms pull-down, top-left-hand corner of the form
• Using the <esc> key when in a design graphics canvas
When closing the event from the from (one of the first two methods) then the event packet
MUST be removed using the event systems .remove method, supplying the same
description that event packet was placed onto the system with:
!!edgCntrl.remove(<event packet description>)
When using the <esc> in the design canvas, then only the relevant tidy-up sequence of the
form should to be used. The developer MUST NOT use a method that has the event
systems .remove method in, this could cause problems.

© Copyright 1974 to current year. 3:27 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Equivalents to "VAR !<id> PICK" commands


The following are examples of the old style PML 1 commands used to suspend the currently
active macro with a pick from the graphics canvas:
The following example equates to the old style "pick an element":

VAR !<varid> PICK

-- Define event packet


!packet = object EDGPACKET()

-- Define standard element pick


-- Equates to old PROMPT OFF
-- PROMPT LOAD ESCAPE '<prompt>'
!packet.elementPick ('Identify element')

-- Defines action on completion of the pick, passing complete


-- pick data
!packet.action ='!action(!this.return[1])'

-- Add event packet to the system


-- Equate to old VAR !varID PICK
!!edgCntrl.add(!packet)

The following example equates to the old style "pick a pline of a section":

VAR !<varid> PICK PLINE

-- Define event packet


!packet = object EDGPACKET()

-- Define standard element pick


-- Equates to old PROMPT OFF
-- PROMPT LOAD ESCAPE '<prompt>'
!packet. plinePick ('Identify pline of section)

-- Defines action on completion of the pick, passing complete


-- pick data
!packet.action ='!action(!this.return[1])'

-- Add event packet to the system


-- Equate to old VAR !varID PICK PLINE
!!edgCntrl.add(!packet)

The following example equates to the old style "pick a ppoint of an element":

© Copyright 1974 to current year. 3:28 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

VAR !<varid> PICK PLINE

-- Define event packet


!packet = object EDGPACKET()

-- Define standard element pick


-- Equates to old PROMPT OFF
-- PROMPT LOAD ESCAPE '<prompt>'
!packet. plinePick ('Identify element ppoint)

-- Defines action on completion of the pick, passing complete


-- pick data
!packet.action ='!action(!this.return[1])'

-- Add event packet to the system


-- Equate to old VAR !varID PICK POINT
!!edgCntrl.add(!packet)

Notes:
1. With the EDG system, it is not possible to instigate an event and suspend the currently
active macro then return to the same point in the macro, once the pick is completed. If
the developer wants to simulate the suspension of a macro, i.e. wait for the pick on the
graphics canvas. Then, the invocation of the event packet MUST be the last command
within the file and the action to be carried out after the pick, MUST be in the function/
method defined in the .action member.
Command defined after the invocation of an event packet within the same macro,
MUST NOT rely on the pick data of the event. Also it should be noted that any changes
to the packet definition WILL NOT have any effect on the event packet that has been
added to the system.
2. All of the above will automatically use the standard filters set via the filter utility within
the application. If an event packet is required that has a specific type of pick filter and
the standard filters are to be ignored, see below.

3.10.3 Limitations and Restrictions


Currently there are no methods on the event packet object for passing data down into the
lower level objects used by the system. This means that if there are requirement for a pick
sequence, pick type or actual pick to act differently than those defined by the currently
available pick sequence methods, the developer will have to define their own object
definition for the event packet in full.
It should also be noted that once an event is placed on the event stack, modifying the packet
that was originally passed to the system WILL NOT change the packet that is held within the
event system.
It is not possible to define an event packet, which comprises of a single specific type of pick,
followed by an unspecified one of the same type of pick.
It is not possible to define an event packet that triggers a subsequent event packet off, on
the completion of another, i.e. don't have an !!edgCntrl.add(<edgPacket>) within the
.close action of the first packet. As adding a new packet in the close sequence, will actually

© Copyright 1974 to current year. 3:29 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

stack the packet that is running, only removing it from the system, once the subsequent
packet has finished.

3.11 Pick Packet (edgPickPacket)


Whereas the event packet edgPacket defines what happens before and after a pick or
picks have been performed, the pick packet defines the actual pick sequence and types of
pick that are to be performed before the action of the event packet is executed.
A pick packet can be defined simple as a single basic pick, pick element, pline, ppoint, etc.
etc. Or it can be used to define several consecutive picks, either of the same time or of
different types.
Only when all picks within a pick packet have been performed, will the system return control
to the owning event packet. This allows the developer to define a standard set of picks
required for an interaction, without the need to handle every graphic canvas pick in the utility
they are writing.
Similar to the event packet, the pick packet object can be broken down into several
components, these are:
• Administration data
• Actions
• Pick sequence definitions
• Input Data
• Output Data
Currently the main interface into the object is via members, however, there are several
methods available for defining the most common pick types.

Administration Data
Unlike the administrative members of the event object, these members of this object are
only for interrogation by the developer and do not perform or define any characteristics of
the pick packet, they are only for information.

Actions
There is only one action member of the pick packet object .action this defines the action
that is carried out once all the picks within the pick packet definition have been completed.
Where a developer wish to define an action that is triggered on the completion of all picks,
then refer to the event packet action section, as the same principles apply to the definition of
the pick packet action.

Pick Sequence Definitions


For each pick required by the pick packet, the sequence definition array .picks, must
contain one or more pick type objects edgPickType, which define the pick to be carried out
by the system. This means that where a pick packet requires two pick, then the sequence
definition array .picks will contain two entries.
There are several predefined methods available to the object that allows commonly required
pick sequences to be defined. The defined methods describe the pick packet object in their
entirety and should not require any modification.

© Copyright 1974 to current year. 3:30 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

In most instances the predefined methods within the object can be used via a method on the
event packet object edgPacket (refer to Pick Sequence Methods). Therefore, in most cases
the use of the pick packet predefined methods should not be required.

Input Data
The input data mechanism is identical to that of the event packet input mechanism, i.e. if
data is to be passed about within the pick packet definition, then it should be via the .input
array (refer to Input Data).
Even though the input member has been included in the system, it currently has not been
used within any of the EDG developed so far. Therefore, even though the mechanism is
available it has not been extensively tested.

Output Data
The output data mechanism is identical to that of the event packet object (refer to Output
Data).

3.11.1 Published Interface


There are two main components to the pick packet object, these are the member and
methods.

Members
The following are published member interface into the object, members not defined within
this table are internal to the object and should never be set by the developer.

Name Type Action


.description STRING Description of the event packet.
.key STRING Single word identifier.
.prompt STRING Primary prompt (shown at the beginning of the prompt
status line.
.picks ARRAY Picks types edgPickType defining the pick sequence.
.action STRING Action carried out after all the picks within the pick
sequence have been completed.
.input ARRAY Contains information to be held local to the pick packet,
which can be used during it execution.

Methods
There are several methods that can be used to define a standard pick packet, the following
are the ones currently supported:

Name Action
.stdGphWindow(<prompt>) Standard graphical window pick (only screen position
used).
.stdScreen(<prompt>) Standard screen pick.
.stdView(<prompt>) Standard screen pick.

© Copyright 1974 to current year. 3:31 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

.stdElement(<prompt>) Standard element pick.


.stdAny(<prompt>) Standard element pick.
.stdPpoint(<prompt>) Standard ppoint pick.
.stdPline(<prompt>) Standard pline pick.
.stdAid(<prompt>) Standard aid element pick.
.stdGraphic(<prompt>) Standard graphical pick.
.direction(<prompt>) Standard derive direction pick.
.measureDistance() Standard distance measure.
.measureAngle() Standard angle measure between three point.
.measureLineAngle() Standard angle measure between two lines.
.stdPosition(<prompt>) Standard 3D single position pick.
.circle3pnts() Circle through 3 points.
.circleDia3d() Circle through 2 Positions (diameter defined) 3D.
.circleRad3D() Circle define centre and radius + control point 3D.
.circleFixRad3D(<any>) Circle centred of defined radius 3D.
.circleFixDia3D(<any>) Circle centred of defined diameter 3D.
.circleDia2D(<any>) Circle through 2 Positions (diameter defined) 2D.
.circleRad2D(<any>) Circle define centre and radius + control point 2D.
.circleFixRad2D(<any>, Circle define centre and radius + control point 2D.
<any>)
.circleFixDia2D(<any>, Circle centred of defined diameter 2D.
<any>)
.circleFillet(<any>) Fillet circle of defined radius.
.circleTan3Lines() Circle tangential to 3 lines.
.circleTanTan(<any>) Circle tangential to two other circles.
.circlePntTan() Circle, centred and tangential to another circles.
.circleFRadPntTan(<any>) Circle, centred and tangential to another circles of fixed
radius.
.circleFRadPntPnt(<any>) Circle going through two points + polar control point.
.circleDerive() Derive a circle from a DB element.
.pointPnt() Define working point in 3D space.
.linePntPnt() Define a line.
.lineAngle(<any>) Line offset by an angle from the picked line, towards the
second pick.
.lineDerive() Derive a line from a db element.

© Copyright 1974 to current year. 3:32 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

.linePntTan() Line between point an tangent of arc.


.lineTanTan() Line between tangent points of two arcs.
.lineBisect() Line bisecting two other lines (smallest angle side).
.lineTwoPlanes() Line at intersection of two planes.
.lineShortest() Shortest Line between to picked items.
.plane3pnts() Define a plane through 3 Positions.
.plane2pnts(<position>) Define a plane through 3 Positions.
.planeDerive() Derive a plane from a db element.

Note: Where pick packet definitions are supplied with arguments with a specific data type,
then these values have to be supplied before the event packet is placed in the event
system. However, where pick packets have an <any> argument type, the can be
supplied as a pointer (expression) that evaluates into the correct data type when the
action of the pick is evaluated.

The following are the standard available methods and their default settings that can be
modified or used by the developer. Members not shown in the list, but which are available
for the developer, should be left as defined by the method.

Method Name Description


.stdGphWindow(<prompt>) Standard graphical window pick.
Arguments Description
<prompt> Primary display prompt.
Picks Types Description.
[1] stdScreen Pick a position on the graphics canvas (First point).
[2] stdScreen Pick a position on the graphics canvas (Second point).
Pick Packet Members Settings
.description Standard Graphical window pick.
.key StdGphWindow.
.input
Return Array Description
[1] ARC Arc defining the plane of view and extremities of the pick.

Method Name Description


.stdScreen(<prompt>) Standard graphical canvas pick, used to derive position in
the selected view.
Arguments Description
<prompt> Primary display prompt.

© Copyright 1974 to current year. 3:33 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Picks Types Description.


[1] stdScreen Pick a point on the graphical canvas.
Pick Packet Members Settings
.description Standard Screen Pick.
.key StdScreen.
.input
Return Array Description
[1] POINTVECTOR Contains direction of the view picked and the position on the
view plane (normal to direction of view, through the centre of
view limits).

Method Name Description


.stdView(<prompt>) Standard view pick, used to determine graphic view picked.
Arguments Description
<prompt> Primary display prompt.
Picks Types Description
[1] stdView Pick view gadget.
Pick Packet Members Settings
.description Standard View Pick.
.key stdView.
.input
Return Array Description
[1] GADGET Pointer to view gadget picked.

Method Name Description


.stdElement(<prompt>) Standard element pick, picks database element form
graphical view.
Arguments Description
<prompt> Primary display prompt.
Picks Types Description.
[1] stdElement Pick database element.
Pick Packet Members Settings
.description Standard Element Pick.

© Copyright 1974 to current year. 3:34 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

.key stdElement.
.input
Return Array Description
[1] edgPickData Standard event pick return object.

Method Name Description


.stdAny(<prompt>) Pick any element displayed in the graphical view.
Arguments Description
<prompt> Primary display prompt.
Picks Types Description
[1] stdAny Pick any graphical element type.
Pick Packet Members Settings
.description Standard Any Pick.
.key stdAny.
.input
Return Array Description
[1] edgPickData Standard event pick return object.

Method Name Description


.stdPpoint(<prompt>) Pick a ppoint of an element in the graphical view.
Arguments Description
<prompt> Primary display prompt.
Picks Types Description
[1] stdPpoint Pick a ppoint.
Pick Packet Members Settings
.description Standard Ppoint Pick.
.key stdPpoint.
.input
Return Array Description
[1] edgPickData Standard event pick return object.

© Copyright 1974 to current year. 3:35 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Method Name Description


.stdPline(<prompt>) Pick a pline of an element in the graphical view.
Arguments Description
<prompt> Primary display prompt.
Picks Types Description
[1] stdPline Pick a structural pline.
Pick Packet Members Settings
.description Standard pline Pick.
.key stdPline.
.input
Return Array Description
[1] edgPickData Standard event pick return object.

Method Name Description


.stdAid(<prompt>) Pick a registered graphical aid element from the graphical
view.
Arguments Description
<prompt> Primary display prompt.
Picks Types Description
[1] stdAid Pick graphical aid.
Pick Packet Members Settings
.description Standard Aid Element Pick.
.key stdAid.
.input
Return Array Description
[1] edgPickData Standard event pick return object.

Method Name Description


.stdGraphic(<prompt>) Pick graphical component of any element in the graphical
view, i.e. point, line or plane.
Arguments Description
<prompt> Primary display prompt.

© Copyright 1974 to current year. 3:36 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Picks Types Description


[1] stdGraphics Pick graphical entity.
Pick Packet Members Settings
.description Standard Graphic Pick.
.key stdGraphic.
.input
Return Array Description
[1] edgPickData Standard event pick return object.

Method Name Description


.direction(<prompt>) Derive direction from graphical entity picked in the view.
Arguments Description
<prompt> Primary display prompt.
Picks Types Description.
[1] stdGraphics Pick graphical entity.
Pick Packet Members Settings
.description Standard Derive Direction Pick.
.key direction.
.input
Return Array Description
[1] DIRECTION Standard direction object containing the direction of graphical
item picked.

Method Name Description


.measureDistance() Standard linear measure of to derived positions.
Picks Types Description
[1] stdPosition Positional pick, start of measure.
[2] stdPosition Positional pick, end of measure.
Pick Packet Members Settings
.description Standard Distance Measure.
.key measureDistance.
.prompt Measure distance.
.input

© Copyright 1974 to current year. 3:37 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Return Array Description


[1] LINE Standard line object, contains the start point and end point.
To extract the distance .length() is used on the element.

Method Name Description


.measureAngle() Standard measure of an angle between three position in
space.
Picks Types Description
[1] stdPosition Positional pick, root of angle.
[2] stdPosition Positional pick, first point.
[3] stdPosition Positional pick, second pick.
Pick Packet Members Settings
.description Standard Angle Measure.
.key measureAngle.
.prompt Measure angle.
.input
Return Array Description
[1] ARC Standard arc object, centred on the root of the angle. To
extract the angle .angle() is used on the element.

Method Name Description


.measureLineAngle() Standard measure of an angle between two graphical line.
Picks Types Description
[1] stdGraphics Pick graphical line entity, first line.
[2] stdGraphics Pick graphical line entity, second line.
Pick Packet Members Settings
.description Standard Line Angle Measure.
.key measureLineAngle.
.prompt Measure angle between lines.
.input
Return Array Description
[1] REAL Angle between the two picked lines.

© Copyright 1974 to current year. 3:38 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Method Name Description


.stdPosition(<prompt>) Standard derive position from graphical pick.
Arguments Description
<prompt> Primary display prompt.
Picks Types Description
[1] stdPosition Positional pick.
Pick Packet Members Settings
.description Standard single position Pick.
.key stdPosition.
.input
Return Array Description
[1] edgPositionData Event picked position return object, contains all pick data and
derived position from the pick.

Method Name Description


.circle3Pnts() Define a circle (arc) through point in 3D space
Picks Types Description
[1] stdPosition Positional pick, first point (start of arc).
[2] stdPosition Positional pick, second point (point on circumference).
[3] stdPosition Positional pick, third point (end of arc).
Pick Packet Members Settings
.description Circle through 3 Points.
.key circle3Pnts.
.prompt Circle (three points).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleDia3D() Define a circle (arc) of diameter between two picks in a plane
defined by a third.
Picks Types Description

© Copyright 1974 to current year. 3:39 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

[1] stdPosition Positional pick, first point (start of arc).


[2] stdPosition Positional pick, second point (diameter).
[3] stdPosition Positional pick, control point (Y).
Pick Packet Members Settings
.description Circle derive diameter.
.key circleDia3D.
.prompt Circle (derive diameter).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleRad3D() Define a circle (arc) of radius between two picks in a plane
defined by a third.
Picks Types Description
[1] stdPosition Positional pick, centre.
[2] stdPosition Positional pick, radius through point (X axes).
[3] stdPosition Positional pick, control point (Y).
Pick Packet Members Settings
.description Circle centred, derived radius.
.key circleRad3D.
.prompt Circle (derive radius).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleFixRad3D(<any>) Define a circle (arc) with supplied radius centred on the first
point, orientated by the second and third points.
Arguments Description
<any> Any data type that must equate to a real value (radius).
Picks Types Description
[1] stdPosition Positional pick, centre.

© Copyright 1974 to current year. 3:40 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

[2] stdPosition Positional pick, first control point (X).


[3] stdPosition Positional pick, second control point (Y).
Pick Packet Members Settings
.description Circle Centre, defined radius.
.key circleFixRad3D.
.prompt Circle (defined radius).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleFixDia3D(<any>) Define a circle (arc) with supplied diameter centred on the
first point, orientated by the second and third points.
Arguments Description
<any> Any data type that must equate to a real value (diameter).
Picks Types Description
[1] stdPosition Positional pick, centre.
[2] stdPosition Positional pick, first control point (X).
[3] stdPosition Positional pick, second control point (Y).
Pick Packet Members Settings
.description Circle Centre, defined diameter.
.key circleFixDia3D.
.prompt Circle (defined diameter).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleDia2D(<any>) Define a circle (arc) with diameter between the two picked
positions, mapped onto the passed plane.
Arguments Description
<any> Any data type that must equate to a plane object.
Picks Types Description.

© Copyright 1974 to current year. 3:41 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

[1] stdPosition Positional pick, first point (start & X axes).


[2] stdPosition Positional pick, second point (diameter).
Pick Packet Members Settings
.description Circle derived diameter.
.key circleDia2D.
.prompt Circle (derived diameter).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleRad2D(<any>) Derive a circle (arc) with radius between the two picked
positions, mapped onto the passed plane.
Arguments Description
<any> Any data type that must equate to a plane object.
Picks Types Description
[1] stdPosition Positional pick, centre.
[2] stdPosition Positional pick, radius through point (X axes).
Pick Packet Members Settings
.description Circle centred, derived radius.
.key circleRad2D.
.prompt Circle (derived radius).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleFixRad2D(<any>,<a Derive a circle (arc) with specified radius centred on the
ny>) picked positions, mapped onto the passed plane.
Arguments Description
<any> Any data type that must equate to a plane object.
<any> Any data type that must equate to a real (radius).
Picks Types Description

© Copyright 1974 to current year. 3:42 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

[1] stdPosition Positional pick, centre.


Pick Packet Members Settings
.description Circle Centre, defined radius.
.key circleFixRad2D.
.prompt Circle (defined radius).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleFixDia2D(<any>,<an Derive a circle (arc) with specified diameter centred on the
y>) picked positions, mapped onto the passed plane.
Arguments Description
<any> Any data type that must equate to a plane object.
<any> Any data type that must equate to a real (diameter).
Picks Types Description
[1] stdPosition Positional pick, centre.
Pick Packet Members Settings
.description Circle Centre, defined diameter.
.key circleFixDia2D.
.prompt Circle (defined diameter).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleFillet(<any>) Derive a circle (arc) of supplied radius between two picked
lines.
Arguments Description
<any> Any data type that must equate to a real (diameter).
Picks Types Description
[1] positionLinear Pick linear items and position on it, first line.
[2] positionLinear Pick linear items and position on it, second line

© Copyright 1974 to current year. 3:43 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Pick Packet Members Settings


.description Fillet Circle of defined radius.
.key circleFillet.
.prompt Circle (Fillet).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleTan3Lines() Derive a circle (arc) which is tangential to the three picked
graphical lines.
Picks Types Description
[1] positionLinear Pick linear items and position on it, first line.
[2] positionLinear Pick linear items and position on it, second line.
[3] positionLinear Pick linear items and position on it, third line.
Pick Packet Members Settings
.description Circle tangential to 3 lines.
.key circleTan3Lines.
.prompt Circle (Tan. To 3 lines).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleTanTan(<any>) Derive a circle (arc) of supplied radius which is tangential to
the two circular elements picked, with centre towards the
third positional pick.
Arguments Description
<any> Any data type that must equate to a real (radius).
Picks Types Description
[1] positionArc Pick arc items and position on it, first circle.
[2] positionArc Pick arc items and position on it, second circle.
[3] stdPosition Position pick, centre side.

© Copyright 1974 to current year. 3:44 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Pick Packet Members Settings


.description Circle tangential to two other circles.
.key circleTanTan.
.prompt Circle (tangential).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circlePntTan() Derive a circle (arc) with radius from first positional pick to
nearest tangent on picked circular element.
Picks Types Description
[1] stdPosition Position pick, centre.
[2] positionArc Pick arc items and position on it, circle.
Pick Packet Members Settings
.description Circle, centred and tangential to another circle.
.key circlePntTan.
.prompt Circle (point - tangent).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleFRadPntTan(<any>) Derive a circle (arc) of specified radius which lies on the line
from the first positional pick to the centre of arc of the second
pick.
Arguments Description
<any> Any data type that must equate to a real (radius).
Picks Types Description
[1] stdPosition Position pick, control point.
[2] positionArc Pick arc items and position on it, circle.
Pick Packet Members Settings
.description Circle, centred and tangential to another circle of fixed
radius.

© Copyright 1974 to current year. 3:45 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

.key circleFRadPntTan.
.prompt Circle (point - tangent).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleFRadPntPnt(<any>) Derive a circle (arc) of specified radius that passes through
the first two positional picks, the third defines the direction of
the "bulge".
Arguments Description
<any> Any data type that must equate to a real (radius).
Picks Types Description
[1] stdPosition Position pick, start point.
[2] stdPosition Position pick, end point.
[3] stdPosition Position pick, polar control point.
Pick Packet Members Settings
.description Circle, through 2 points + polar control point.
.key circleFRadPntPnt.
.prompt Circle (through 2 points).
.input
Return Array Description
[1] ARC Standard arc object.

Method Name Description


.circleDerive() Derive a circle (arc) from the picked database element.
Picks Types Description
[1] dbCircle Pick database element that can be interpreted as an arc.
Pick Packet Members Settings
.description Derive a Circle from a db Element.
.key circleDerive.
.prompt Circle (derived).
.input

© Copyright 1974 to current year. 3:46 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Return Array Description


[1] ARC Standard arc object.

Method Name Description


.pointPnt() Derive a point in space.
Picks Types Description
[1] stdPosition Position pick.
Pick Packet Members Settings
.description Define Working Point.
.key pointPnt.
.prompt Working Point (position).
.input
Return Array Description
[1] POSITION Standard position object.

Method Name Description


.linePntPnt() Derive a line between two points in space.
Picks Types Description
[1] stdPosition Position pick, start.
[2] stdPosition Position pick, end.
Pick Packet Members Settings
.description Line between two points.
.key linePntPnt.
.prompt Line.
.input
Return Array Description
[1] LINE Standard line object.

Method Name Description


.lineAngle(<any>) Derive a line offset by the supplied angle (towards the first
positional pick) starting at the second positional pick.
Arguments Description

© Copyright 1974 to current year. 3:47 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

<any> Any data type that must equate to a real (angle).


Picks Types Description
[1] positionLinear Pick linear items and position on it, line to be copied.
[2] stdPosition Position pick, position angle is towards (wrt to original).
[2] stdPosition Position pick, start position (copied line).
Pick Packet Members Settings
.description Line offset by angle from another.
.key lineAngle.
.prompt Line (offset angle).
.input
Return Array Description
[1] LINE Standard line object.

Method Name Description


.lineDerive() Derive a line from the picked database element.
Picks Types Description
[1] dbLine Pick database element that can be interpreted as an line.
Pick Packet Members Settings
.description Derive a line from a db element.
.key lineDerive.
.prompt Line (derive).
.input
Return Array Description
[1] LINE Standard line object.

Method Name Description


.linePntTan() Derive a line between a point and the nearest tangent point
on a picked arc.
Picks Types Description
[1] stdPosition Position pick, start.
[2] positionArc Pick arc items and position on it, circle/arc.
Pick Packet Members Settings
.description Line between point and tangent of arc.

© Copyright 1974 to current year. 3:48 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

.key linePntTan.
.prompt Line (point - tangent).
.input
Return Array Description
[1] LINE Standard line object.

Method Name Description


.lineTanTan() Derive a line between the nearest tangent points on the arcs
pick.
Picks Types Description
[1] positionArc Pick arc items and position on it, first circle/arc.
[2] positionArc Pick arc items and position on it, second circle/arc.
Pick Packet Members Settings
.description Line between tangents of two arcs.
.key .lineTanTan.
.prompt Line (tangent - tangent).
.input
Return Array Description
[1] LINE Standard line object.

Method Name Description


.lineBisect() Derive a line that bisects the two lines picked.
Picks Types Description
[1] positionLinear Pick linear items and position on it, first line.
[2] positionLinear Pick linear items and position on it, second line.
Pick Packet Members Settings
.description Line bisection two lines.
.key .lineBisect.
.prompt Line (bisect).
.input
Return Array Description
[1] LINE Standard line object.

© Copyright 1974 to current year. 3:49 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Method Name Description


.lineTwoPlanes() Derive a line at the intersection of the two picked plane.
Picks Types Description
[1] positionPlane Pick planar items and position on it, first plane.
[2] positionPlane Pick planar items and position on it, second plane.
Pick Packet Members Settings
.description Line at intersection of 2 planes.
.key lineTwoPlanes.
.prompt Line (2 planes).
.input
Return Array Description
[1] LINE Standard line object.

Method Name Description


.lineShortest() Derive the shortest line between two graphical entities,
parallel items will start at the position of the first pick.
Picks Types Description
[1] stdGraphics Pick graphical entity, from.
[2] stdGraphics Pick graphical entity, to.
Pick Packet Members Settings
.description Standard Parallel Distance Measure.
.key .lineShortest.
.prompt Measure distance.
.input
Return Array Description
[1] LINE Standard line object.

Method Name Description


.plane3Pnts() Derive a plane that passes through the three positions
picked.
Picks Types Description
[1] stdPosition Position pick, first point (centre of the plane).

© Copyright 1974 to current year. 3:50 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

[2 stdPosition Position pick, second point (X axes).


[3 stdPosition Position pick, third point (Y axes).
Pick Packet Members Settings
.description Plane through 3 Positions.
.key plane3Pnts.
.prompt Plane (three points).
.input
Return Array Description
[1] PLANE Standard plane object.

Method Name Description


.plane2Pnts(<position>) Derive a plane that is centred on the passed position and
orientated to the two positional picks.
Arguments Description
<position> Position of plane origin.
Picks Types Description.
[1] stdPosition Position pick, X through point.
[2] stdPosition Position pick, Y through point.
Pick Packet Members Settings
.description Plane through 2 Positions (supplied position is centre).
.key plane2Pnts.
.prompt Plane (two points).
.input
Return Array Description
[1] PLANE Standard plane object.

Method Name Description


.planeDerive() Derive a plane from the picked database element.
Picks Types Description
[1] dbPlane Pick database element that can be interpreted as an plane.
Pick Packet Members Settings
.description Derive a plane from a db element.
.key derivePlane.

© Copyright 1974 to current year. 3:51 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

.prompt Derive plane.


.input
Return Array Description
[1] PLANE Standard plane object.

Note: When defining pick packets using the above methods, the method should be applied
to the object before any of the other members are set, as the methods will overwrite
several of the pick packet members.

3.11.2 Examples (Defining Pick Sequences)


The following are some examples and description of using some of the basic pick packet
methods and defining event pick sequences that are not catered for by the standard
methods.

Note: The definitions of the event packets that the pick packet is to be applied to are not
shown. See below for how the pick packet can be defined with respect to an event
packet (refer to Examples (Using Pick Packets).

Standard Element Method


The Standard Element Method example shows how to use the standard element pick
sequence, the same sequence can be applied to any of the other standard events.

-- Define pick packet


!pickPacket = object EDGPICKPACKET()

-- Define line between two points


!pickPacket. stdElement ('Pick element')

Standard Line between two point Method


The Standard Line between two point Method example shows how to define a pick that
derive a line between two points within 3D space, the resultant line can then be used for any
linear based item, SCTN, line, distance measurement. In this example we've change the
prompt so that we are asking to defined a linear measurement, this is basically the same as
the standard .measureDistance() method is defined.

-- Define pick packet


!pickPacket = object EDGPICKPACKET()

-- Define line between two points


!pickPacket.linePntPnt()

-- Modify the prompt


!this.prompt = 'Measure distance'

© Copyright 1974 to current year. 3:52 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Element-Position Picking
The Element-Position Picking example shows how the developer can define a pick
sequence that firstly asks for an element to be picked, then for a derived position to be
picked.
This type of pick sequence can be used to identify an element, then reposition it in a new
place.

-- Define pick packet


!pickPacket = object EDGPICKPACKET()

-- Define information
!pickPacket.key = 'element-position'
!pickPacket.description = 'Pick an element then a positions'

-- Define primary prompt


!pickPacket.prompt = 'Move element'

-- Declare first pick (element)


!pickPacket.picks[1] = object EDGPICKTYPE()
!pickPacket.picks[1].stdElement('(Pick element to move)')

-- Declare second pick (position)


!pickPacket.picks[2] = object EDGPICKTYPE()
!pickPacket.picks[2].stdPosition('(New position)')

Note: No action is carried out within the pick packet, therefore, all the data will be returned
from each of the pick and will be passed back up the event system to the event
packet unmodified.

Defining Fixed Radius Circle


The Defining Fixed Radius Circle example shows how a fixed radius circle can be defined
so that the radius can be defined via an input gadget of a form, even after the event packet
has been placed on the event system.

-- Check to make sure controlling form has been defined


if(undefined(!!xxxRadius)) then
pml reload form !!xxxRadius
endif

-- Define pick packet, passing pointer to value of the text


-- input gadget of the controlling form
!packet.pickPacket.circleFixRad3d('!!xxxRadius.radius.val')

© Copyright 1974 to current year. 3:53 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Note: If the pointer to the gadget was unquoted, i.e. passed as a REAL value. The current
value of the form gadget would be used and changing the value on the form would
have no effect when the pick packet action is executed.

Whereas, passing the pointer to the form gadget as a string, take the string and
evaluate it at the action time.

3.11.3 Examples (Using Pick Packets)


The following examples show how a pick packet can be either defined directly to an event
packet (edgPacket) or defined as a method against an object or form to be applied to an
event packet within a utility.

Applied to an Event Packet


The Applied to an Event Packet example shows how a standard pick packet can be defined
while defining an event packet.

-- Define event packet


!packet = object EDGPACKET()

-- Set Members
!packet.description = 'Test Packet'
!packet.key = 'testPacket'
!packet.priority =1

-- Defines action on completion of the pick


!packet.action ='!action(!this.return[1])'

-- Define pick sequence


!packet.pickPacket.stdElement('Pick Element')

-- Add event packet to the system


!!edgCntrl.add(!packet)

The pick packet definition can be either done using a standard method on the object (as
above) or defined fully, where there is no standard method.

Method Definition
The Method Definition example is where an object/form has a method(s) that defines a pick
packet sequence that can be applied to a standard event packet within the object/form.
The following is the definition of the method that defines the pick packet:
Method Definition

© Copyright 1974 to current year. 3:54 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

-- Define Method
define method .elementMove() is EDGPICKPACKET

-- Define pick packet


!pickPacket = object EDGPICKPACKET()

-- Define information
!pickPacket.key = 'element-position'
!pickPacket.description = 'Pick an element then a positions'

-- Define primary prompt


!pickPacket.prompt = 'Move element'

-- Declare first pick (element)


!pickPacket.picks[1] = object EDGPICKTYPE()
!pickPacket.picks[1].stdElement('(Pick element to move)')

-- Declare second pick (position)


!pickPacket.picks[2] = object EDGPICKTYPE()
!pickPacket.picks[2].stdPosition('(New position)')

-- Return
return !pickPacket

-- End method definition


endmethod

The following is an extract on how the above method would be used within the owning
object/form:

© Copyright 1974 to current year. 3:55 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

-- Define Packet
!packet = object EDGPACKET()
.
.
.

-- Test for method


if(!option eq 'MOVE") then
!packet.pickPacket = !this.elementMove()
else
!packet.pickPacket = !this.elementBY()
endif

-- Add event to the system


!!edgCntrl.add(!packet)
-

3.11.4 Limitations and Restrictions


The current event packet object only contains a basic set of pick sequence definitions, but it
is thought that these should allow the developer a broad set that they can use with little or
no modification
Currently many of the utilities within the standard AppWare use these methods in their
interaction with, e.g. 3D Construction Aids, Measurement utilities, etc.
Similar to the event packet, modifying the original definition of a pick packet WILL NOT
update the definition, once it has been placed on the event stack.

3.12 Pick Type (edgPickType)


The pick type object defines the basic types of picks that can be performed by the system.
Whereas the pick packet defines how many and what types of pick are required for a pick
sequence.
There are two main objects the pick type object returns to the calling objects, these are:
• edgPickData this object contains all the information about the pick on the graphical
canvas, without the data being post processed to derive a position, etc.
• edgPositionData this object is basically the same data as the edgPickData but the
data has been processed either by the edg positioning control object, to determine the
derived position of the picked item or the position picked on the items has been derived
using some basic rules.
In some instances, certain pick type methods return only a basic object, e.g.
POINTVECTOR, etc.
This section of the document DOES NOT give a detailed explanation of the members and
principles of this object. As in most cases, changing any of the members will seriously affect
the workings of the object.

© Copyright 1974 to current year. 3:56 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

3.12.1 Published Interface


The following are the main basic types of method interface into the pick type object.
All "<prompts>" are secondary prompts, these are displayed on the prompt line of the
graphic views after the primary prompt which is defined in the pick packet object. These are
used to signify which prompt within the prompt sequence the user is up to.

Position Picking
The following methods are used to define a specific type of filtered pick which returns an
edgPositionData object, the position member of the return object is populated:

Name Action
stdPosition(<prompt>) Standard positioning pick type, derives the position from
the graphical pick (pick type and method are controlled by
the positioning control form).
The initial position derived, will then be mapped against the
active working plane (when set) then the currently defined
offset method will be applied to the position.
positionLinear(<prompt>) Positioning pick for linear elements, converts picked item
into a linear element, then derives the position on the linear
item.
positionArc(<prompt>) Positioning pick for arc elements, converts the picked item
into an arc, then derives the position on the arc.
positionPlane(<prompt>) Positioning pick for plane elements, converts the picked
item into a plane, then derives the position onto the plane.

General Item Picking


The following methods are used to define a specific type of filtered pick which returns an
edgPickData object.

Name Action
stdElement(<prompt>) Standard element pick type, this will only pick database
element in the graphic views.
By default the standard element filters will be applied to the
pick, only allowing those elements that conform to the define
rule for the filter.
stdAny(<prompt>) Standard any pick type, this will allow elements, plines,
ppoints and graphical aids to be in the graphic views.
By default all the standard filters will be applied to the pick.
stdPpoint(<prompt>) Standard element pick type, this will only allow elements
containing ppoints or design points to be picked in the
graphic views.
By default the standard ppoint filters will be applied to the
pick.

© Copyright 1974 to current year. 3:57 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

stdPline(<prompt>) Standard element pline type, this will allow only elements that
have plines to be picked from in the graphic views.
By default the standard pline rules will be applied.
stdAid(<prompt>) Standard Aid element pick type, this will allow all graphical
aids to be picked from the graphical views. However, graphic
aids not registered within the "Construction Aid" utility will
return an error.
stdScreen(<prompt>) Standard screen pick, this will allow a pick anywhere within
the graphical view to be performed. This can considered as a
2D pick within the 3D view.
stdGraphics(<prompt>) Standard graphics pick, this will allow any graphical entity to
be picked within the graphics view, i.e. database element,
graphical aid, ppoint or pline. All elements, will be
decomposed into one of three basic types:
vertex single point at the convergence of edges
edge boundary between facets
facet planar surface of an item

Database Element Interpretation


The following methods are used to define a specific type of filtered pick which returns an
edgPositionData object, however, the position member of the return object is NOT
populated:

Name Action
dbLine(STRING) Setup for picking a linear db item, this will always try and
convert the picked database element into a line. The method
will try and populate the .line member of the return object.
dbCircle(STRING) Setup for picking a circular db item, this will always try and
convert the picked database element into an arc. The
method will try and populate the .arc member of the return
object.
dbPlane(STRING) Setup for picking a plane db item, this will always try and
convert the picked database element into a plane. The
method will try and populate the .plane member of the return
object.

Miscellaneous
The following methods are used to define a specific type of filtered pick which returns an
edgPositionData object, however, the position member of the return object is NOT
populated:

Name Action
stdView(STRING) Standard view pick, this returns the view gadget the pick is
performed in.

© Copyright 1974 to current year. 3:58 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

3.12.2 Examples
As there is not member that should be defined by the developer, the example for the
definition of pick packets will suffice as on how to use the pick type methods. Refer to
Examples (Defining Pick Sequences).

3.12.3 Limitations and Restrictions


The current pick type object contains only the basic pick types. Other pick types of more
complexity will be required for better interaction, however, this will only be possible with
enhancements to the underlying core facilities.

3.13 Pick (edgPick)


The event pick is the lowest component of the event system, this object maps directly onto
the underlying core event handlers.
The majority of the members and methods are private to the object and the event system,
and should never need to modify by the developer. However, there are two members that
the developer may wish to change for special types of picking, these are to control the
filtering of the picks.

3.13.1 Pick Filtering


There are two members that are used to control the pick filtering:

.input This is an array member, containing the qualifiers used to define the
filtering when picking from the graphics view. Each element of the
array relate to a specific type of item, which can be picked, these
are:

[1] Pline, filter applied to display only plines of structural elements


that conform to the defined rule.

[2] Ppoint, filter applied to display only ppoint of elements that


conform to the defined rule.

[3] Element, filter applied to only allow elements that conform to the
defined rule to be picked.

[4] Design Aid, filter applied to only allow design aids that conform
to the defined rule to be picked.

[5] Tubing, filter applied to only allow implied tubing conforming to


the defined rule to be picked.

[6] Graphical Entity, allow only the graphical entities defined in the
member to be pick, these are, VERTEX, EDGE or FACET. If no
entry is defined, then all graphical entities are pickable.

Note: The filtering rules are evaluated as the cursor passed the
item in the graphic view.

© Copyright 1974 to current year. 3:59 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Rules for design elements and tubing are evaluated on only the
design element that can be picked, primitive, piping component,
SCTN, etc. Whereas the rules for ppoints and plines are evaluated
at the point of definition, i.e. on the catalogue definition of them, this
means that information pertaining to the ppoint or pline when in the
design space CAN NOT BE USED.

Element rules are always evaluated before the ppoint and pline
rules, therefore, if an element rule excludes anything that has a
pline, e.g. TYPE eq 'BOX', then the user will not be able to select a
element to pick.

.modifiable If this member is set to true this applies the standard filter to the pick
when the pick becomes active. When false, the currently defined
local rules within the .input member are used.

Note: If you have defined some input rule, this member MUST BE
set to false, otherwise the rules defined within the standard
filtering utility will over-ride the settings when the pick
becomes active.

3.13.2 Rule Combination


The following table show the rules can be used together:

Pline Ppoint Element Aid Tubing Graphics


Pline yes yes
Ppoint yes yes
Element yes yes yes yes
Aid yes
Tubing yes yes
Graphics yes yes yes yes yes

Even though some combination of rules are permissible, the actual usefulness of the
combination is limited.

Note: Dependent on the underlying pick method used, some of the rules will have no effect,
e.g. setting a graphic pick filter when using the pick elements handler, has not
meaning.

© Copyright 1974 to current year. 3:60 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

3.13.3 Published Interface


The following are the two members of the pick object used to control the pick filtering:

Name Type Action


.input ARRAY Picking qualifiers to restrict the data that can be
graphically picked.
.modifiable BOOLEAN True if the standard filtering utilities are to be
applied to the pick when it is active or added
onto the pick stack.

3.13.4 Examples
The following are examples show how to set the pick filter, the first example shows how the
filter is set from the event packet level. All subsequent examples show what filter rules that
can be applied.

Setting Filter from Event Packet


The Setting Filter from Event Packet example shows how the element filter can be set, so
that only element beneath an equipment or sub-equipment can be picked.

-- Define event packet


!packet = object EDGPACKET()

-- Define standard element pick


!packet.elementPick('Pick Element')

-- Define Rule
!rule = 'TYPE of OWNER inset (|EQUI|,|SUBE|)'

-- Set the pick filter for element to only equip and subequip
!packet.pickPacket.picks[1].pick.input[3] = !rule

-- Set the modifiable flag, so that the rule is used


!packet.pickPacket.picks[1].pick.modifiable = false

-- Add event packet to the system


!!edgCntrl.add(!packet)

Note: As only certain element types can be actually picked from the graphic canvases, e.g.
primitives, tubing, etc. Then the rule MUST in this case check whether the parent of
the element is either an equipment or sub-equipment.

© Copyright 1974 to current year. 3:61 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Filter Plines for Structural Beams


The following example shows how a pick filter can be setup, so that only certain plines of
structural sections (SCTN and GENSEC) flagged as a BEAM are allowed to be picked.
The example could be used to pick only the plines on beam section that are on the outer
faces of flange or wed.

-- Define Element Rule


!element = 'TYPE of OWNER inset (|SCTN|,|GENSEC|) and $
GTYPE eq |BEAM|'

-- Define Pline Rule


!pline = 'PKEY inset (|TOS|,|BOS|,|NAR|,|NAL|)'

-- Set the pick filter for element to only equip and subequip
!packet.pickPacket.picks[1].pick.input[1] = !pline
!packet.pickPacket.picks[1].pick.input[3] = !element

-- Set the modifiable flag, so that the rule is used


!packet.pickPacket.picks[1].pick.modifiable = false

Note: The pline rule relates to the attribute that is on the catalogue definition of the section
profile.

Filter Tubing for Branches


The following example show how a pick filter can be defined to allow only vertical legs in a
pipe branch which are have a tube length greater than a specific value.
This example might be used when trying to insert a check valve, of a given length, in the
vertical leg of a pipe, which includes a clearance on either side of the valve.

© Copyright 1974 to current year. 3:62 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

-- Define Element Rule


!element = 'TYPE eq |TUBING|'

-- Element Length + Clearance


!length = !valveLength + !clearance * 2

-- Define Tubing Rule


!tubing = 'GRADIENT eq 100000 and ITLENGTH gt ' & !length

-- Set pick filters


!packet.pickPacket.picks[1].pick.input[3] = !element
!packet.pickPacket.picks[1].pick.input[5] = !tubing

-- Set the modifiable flag, so that the rule is used


!packet.pickPacket.picks[1].pick.modifiable = false

Note: The rule (expression) must always be defined as a string.

3.13.5 Limitations and Restrictions


Currently there is no interface to set the filter rules from any other level within the system,
e.g. from event packet, pick packet or pick type objects. The filter has to be set using all the
variable parentage.

3.14 Pick Data (edgPickData)


The pick data object basically maps on the return data object of the underlying core event
handler. Whereas the underlying system returns the pick data via an array, the pick data
object assigns the data to members with some meaningful names.

3.14.1 Published Interface


The pick data object can be classed as being only a read-only objects, as setting the
members within the object will have no effect on the operation of the event picking.

Method
The pick data object only has one method, this returns the pick data object as a picked
position object.

Name Result Action


.positionData() edgPositionData Converts the pick data into a standard event
position data object.

© Copyright 1974 to current year. 3:63 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

Members (General Picks)


The following are the definition of the members that are common to all the available picking
types:

Name Type Action


.type STRING Basic type of pick on the graphics canvas, e.g.
ELEMENT, PLINE, PPOINT, etc., etc.
.tubing STRING Tube type adjacent to the .item member, i.e. HEAD or
LEAVE.
.item DBREF Database element picked.
.point REAL Ppoint or graphical aid number picked.
.pline STRING Structural pline picked.
.aidType STRING Basic graphical aid type picked, e.g. LINE,
CYLINDER, etc.
.pickLine POINT- Pick vector when picking an item, i.e. direction of view
VECTOR and the position of the direction on the viewing plane.

Members (Graphic Entity Picks)


The following are the definition of the members that are only populated by the graphical
entity picks, these members define the basic graphical components of the item under the
pick cursor:

Name Type Action


.vertexCount REAL Number of vertices, usually only 1, zero if a graphical
edge or facet is picked.
.vertices ARRAY Position of vertex picked.
.lineCount REAL Number of edges/lines at the vertex point, 1 if only a
graphical edge is picked, zero if a facet is picked.
.lines ARRAY Paired positions defining each edge/line.
.facetCount REAL Number of facets bounding the picked line or vertex,
1 if only a facet is picked.
.facets ARRAY Positions of each of the corners of the facets, four per
facet.

3.15 Picked Position Data (edgPositionData)


The Pick Position Data object basically maps on the return data object of the underlying
core event handler. Whereas the underlying system returns the pick data via an array, the
pick data object assigns the data to members with some meaningful names.

© Copyright 1974 to current year. 3:64 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

3.15.1 Published Interface


Similar to the pick data object, this object can be classed as being only a read-only objects,
as setting the members within the object will have no effect on the operation of the event
picking.

Members
The following are the definition of the members:

Name Type Action


.type STRING The is normally the same as the original type, but
in certain instances the can be changed by some
secondary process.
.originalType STRING Basic type of pick on the graphics canvas, e.g.
ELEMENT, PLINE, PPOINT, etc., etc.
.position POSITION Derived position.
.direction DIRECTION Derived direction.
.pointVector POINTVECTOR Pick vector when picking an item, i.e. direction of
view and the position of the direction on the
viewing plane.
.line LINE Picked element interpreted as a line.
.plane PLANE Picked element interpreted as a plane.
.arc ARC Picked element interpreted as a arc.
.item DBREF Item picked, in case of multiple pick the last item.
.items ARRAY All items picked in the pick.
.ppoint REAL Ppoint or graphical aid number picked.
.pline STRING Structural pline picked.
.tubing STRING Tube type adjacent to the .item member, i.e.
HEAD or LEAVE.

Methods
There are several methods avail these are:

Name Result Action


.line() MODIFIES Evaluate line definition for current data.
.arc() MODIFIES Evaluate arc definition for current data.
.plane() MODIFIES Evaluate plane definition for current data.
.getline() LINE Return evaluated line definition for current data,
without modifying the member.

© Copyright 1974 to current year. 3:65 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
Event Driven Graphics

.getarc() ARC Return evaluated arc definition for current data,


without modifying the member.
.getplane() PLANE Return evaluated plane definition for current data,
without modifying the member.

© Copyright 1974 to current year. 3:66 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

A PML 1 Expressions

This appendix explains the PML 1 expressions package. These facilities are needed within
AVEVA products, for example, to define report templates in PDMS.

Note: Generally, all these facilities are compatible with PML 2.

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 $

However, both of the following expressions are valid:

x + y $ adds the values of the numeric variables.

Text1 + text2 $ concatenates the two text strings.

The following types of expressions are available:

Expression
Logical Expressions
Logical Array Expressions
Numeric (Real) Expressions
Real Arrays
Text Expressions

A.1 Format of Expressions


The format of an expression, for example the use of brackets, spaces and quotes, is
important. If you do not follow the rules given below you will get error messages:
Text must be enclosed in quotes. For example:

‘This is text’

© Copyright 1974 to current year. A:1 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

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. For example:

SIN(30)

In general, you do not need spaces before or after brackets, except when a name is
followed by a bracket. If there is no space, the bracket will be read as part of the name. For
example:

(NAME EQ /VESS1 )

A.1.1 Operator Precedence


Operators are evaluated in the order of the following list: the ones at the top of the list are
evaluated first.

Operator Comments
BRACKETS Brackets can be used to control the order in which
operators are evaluated, in the same way as in
normal arithmetic
FUNCTIONS
*/
+-
EQ, NEQ, LT, LE, GE, GT
NOT
AND
OR

A.1.2 Nesting Expressions


Expressions can be nested using brackets. For example:

( (SIN(!angleA) * 2) / SIN(!angleB) )

A.2 Logical Expressions


Logical expressions can contain:
• Attributes of type logical e.g. BUILT.
• Logical constants. The constants available are: TRUE, ON, YES for true, and FALSE,
OFF, NO for false.

© Copyright 1974 to current year. A:2 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

• Logical operators.
• Logical functions.

A.2.1 Logical Operators


The logical operators available are:

Operator Comments
AND
EQ, NE The operators EQ and NE may be applied to any pair
of values of the same type.
GT, GE, LE, LT The operators GE, LE, GT and LT may only be used
with numbers and positions. Refer to Positions,
Directions and Orientations in Expressions (PDMS
only) for more information.
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. Refer to Precision of Comparisons for tolerances in comparing numbers.

AND

Synopsis log1 AND log2 -> logical

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.

Example TRUE and FALSE -> FALSE

© Copyright 1974 to current year. A:3 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

EQ and NE

Synopsis ( number1 EQual number2) -> logical


( text1 EQual text2 ) -> logical
( log1 EQual log2 ) -> logical
( id1 EQual id2 ) -> logical
( pos1 EQual pos2 ) -> logical
( dir1 EQual dir2 ) -> logical
( ori1 EQual ori2 ) -> logical
( pp1 EQual pp2 ) -> logical
( number1 NEqual number2 ) -> logical
( text1 NEqual text2 ) -> logical
( log1 NEqual log2 ) -> logical
( id1 NEqual id2 ) -> logical
( pos1 NEqual pos2 ) -> logical
( dir1 NEqual dir2 ) -> logical
( ori1 NEqual ori2 ) -> logical
( pp1 NEqual pp2 ) -> logical
Description Compare two values. A special feature is used for the
positions, only the coordinates specified are compared.
Refer to Comparing Positions for more information. Unset
values result in FALSE across EQ, TRUE across NE.

Side Effects If two positions have no common coordinate, for example,


’N 10 ne U 10’, the result is undefined. Units are
consolidated across comparisons.

Example ( 1.0 eq 2.0) -> FALSE


Errors None.

© Copyright 1974 to current year. A:4 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

GT, GE, LE and LT

Synopsis ( number1 GT number2 ) > logical


( pos1 GT pos2 ) > logical
( number1 GE number2 ) > logical
( pos1 GE pos2 ) > logical
( number1 LE number2 ) > logical
( pos1 LE pos2 ) > logical
( number1 LT number2 ) > logical
( pos1 LT pos2 ) > logical
Description Compare two values. A special feature is used for positions:
only the coordinates specified are compared. Refer to
Comparing Positions for more information. For positions,
since comparisons may be performed on more than one
value, LT (GT) is not the inverse of GE (LE). Unset values
result in false

Side Effects If two positions have no common coordinate, the result is


undefined. For example, ’N 10 gt U 10’.
Units are consolidated across comparisons.

Example ( 1.0 LT 2.0) -> TRUE


( N 0 E 10 GT N 10 E 0 ) -> FALSE
( N 0 E 10 GT N 10 E 0 ) -FALSE
Errors None.

NOT

Synopsis NOT log1 -> logical


Description Perform the logical NOT on a logical value.

Side Effects None.

Example not TRUE -> FALSE


Errors None.

© Copyright 1974 to current year. A:5 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

OR

Synopsis OR log2 -> logical


Description Perform the logical inclusive OR between two logical values.
(The exclusive OR is defined by using NE.)
Allows numbers instead of logical values.

Side Effects If one of the values is undefined and the other one is TRUE,
the result is TRUE.

Example TRUE or FALSE -> TRUE


Errors None.

A.2.2 Logical Functions


The logical functions available are:

Function Comments
BADREF
DEFINED,UNDEFINED
CREATED
DELETED
EMPTY
MATCHWILD
MODIFIED
UNSET
VLOGICAL

BADREF

Synopsis BADREF (id) -> logical


Description TRUE if id is invalid, else FALSE.

Side Effects None

Example BADREF(TREF) -> ’true’ if TREF=nulref


Errors None.

© Copyright 1974 to current year. A:6 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

DEFINED and UNDEFINED

Synopsis DEFined (variable_name) -> logical


DEFined -> logical
(variable_name,number)
UNDEFined (variable_name) -> logical
UNDEFined (variable_name , -> logical
number)
Description With one argument, DEFINED is true only if the scalar
variable, the array variable or the array variable element
exists.
With two arguments, DEFINED is true only if the first
argument is an array variable which has a value for the index
denoted by the second argument.
UNDEFINED( !foo ) is equivalent to NOT
DEFINED( !foo ).
Side Effects None.

Example DEFINED ( !var ) -> TRUE


DEFINED ( !array ) -> TRUE
DEFINED ( !array[1] )) -> TRUE
DEFINED ( !array , 1 ) -> TRUE
DEFINED ( !var) -> FALSE
UNDEFINED ( !array) -> TRUE
DEFINED ( !array , 3 ) -> FALSE
Errors None.

CREATED

Synopsis CREATED -> logical


Description Returns TRUE if the element has been created since the set
date.

Side Effects None.

Example CREATED -> TRUE


Errors None.

© Copyright 1974 to current year. A:7 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

DELETED

Synopsis DELETED -> logical


Description Returns TRUE if the element has been deleted since the set
date.

Side Effects None.

Example DELETED -> TRUE


Errors None.

EMPTY

Synopsis EMPTY(text) -> logical


Description Returns TRUE if text is a zero length string, else FALSE

Side Effects None.

Example EMPTY(‘’) -> TRUE


EMPTY(‘not empty’) -> FALSE
Errors None.

MATCHWILD

Synopsis MATCHW/ILD( text1, text2) -> logical


MATCHW/ILD( text1, text2, -> logical
text3)
MATCHW/ILD( text1, text2, -> logical
text3, text4)
Description Matches string text2 to string text1. If they are the same then
returns TRUE, else FALSE. text2 may contain wildcard
characters.
The defaults for wildcards are ‘*’ for any number of characters,
and ‘?’ for a single character.
With three arguments, the multiple wildcard character ‘*’ may
be redefined by text3.
With four arguments the single wildcard character ‘?’ may be
redefined by text4.

Side Effects None

© Copyright 1974 to current year. A:8 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

Example MATCHW/ILD(’A big bottle of


beer’,’*big*’) -> TRUE
MATCHW/ILD(’A big bottle of
beer’,’??big*’) -> TRUE
MATCHW/ILD(’A big bottle of
beer’,’???*big*’) -> FALSE
MATCHW/ILD(’A big bottle of
beer’,’*big*beer’) -> TRUE
MATCHW/ILD(’** text’,’**!’,’!’) -> TRUE
Errors None.

MODIFIED

Synopsis
.-----------------------------------.
/ |
>- MODIFIED-(-+- attname -------*- DESCENDANTS --+-+-comma +-attname -’
| | | |
|- DESCENDANTS -. |- SIGNIFICANT --| |
| | | | |
|- SIGNIFICANT--| |- PRIMARY ----- | |
| | | | |
|- PRIMARY -----| |- OFFSPRING-----| |
| | | | |
|- OFFSPRING ---| ‘----------------’ |
| | |
| | |
| | |
‘---------------+--------------------+--+-- ) - OF - id
|
‘-

Description For sophisticated queries relating to modifications. Returns


TRUE if a modification has taken place.
Each attribute name may be followed by the following qualifying
keywords:
OFFSPRING, to check this element and members
SIGNIF, to check all elements for which this element
represents the significant one;
PRIMARY, check all elements for which this element
represents the primary one;
DESCENDANTS, this element and everything below
(descendants).
The ‘OF’ syntax may be used as for attributes.
The MODIFIED function or the GEOM, CATTEXT and
CATMOD pseudo-attributes can be used instead of the
AFTERDATE function. Refer to the Data Model Reference
Manual.

© Copyright 1974 to current year. A:9 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

The MODIFIED, DELETED and CREATED functions may go


anywhere within a PML1 expression. i.e. after Q/VAR and
within collections
Side Effects None
Example Q MODIFIED() Returns TRUE if element has
changed at all since the
comparison date.
It will also return TRUE if the
element has been created
since the comparison date.
Q MODIFIED(POS,ORI) Returns TRUE if POS or ORI
modified since the comparison
date.
Q MODIFIED(P1 POS) Returns TRUE if the position of
P1 has changed.
Q MODIFIED(GEOM Returns TRUE if any geometry
DESCENDANTS for item or any descendants
has changed
Q MODIFIED(PRIMARY) Returns TRUE if any element
for which this element is
primary, has changed.
Q MODIFIED() OF / Returns TRUE if /PIPE1 has
PIPE1 been modified since the
comparison date.
Q (BUIL OR
MODIFIED()OR ELECREC
OF NEXT )
Errors None.

The MODIFIED, DELETED and CREATED functions are not implemented within PML2
expressions.

UNSET

Synopsis UNSET(value) -> logical


Description Returns TRUE if value is unset, else FALSE. The value can
be of any data type including ARRAYS. Normally it will be a
attribute.
Side Effects None.

© Copyright 1974 to current year. A:10 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

Example UNSET( DESC ) TRUE where DESC is an unset text


attribute
UNSET(CRFA) FALSE where CRFA contains unset
reference attributes
Errors None.

VLOGICAL
VLOGICAL is used for the late evaluation of variables.

Synopsis VLOGICAL ( variable_name )) -> logical


VLOGICAL ( variable_name , -> logical
number)
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.

Example VLOG ( !array[1] ) -> TRUE


VLOG ( !array , 2 ) -> FALSE
Errors None.

A.2.3 Logical Array Expressions


Logical array expressions can contain:
• PDMS attributes of type logical array. For example, LOGARR where LOGARR is a
UDA of type logical.
• Logical constants. The constants available are: TRUE, ON, YES for true; and FALSE,
OFF, NO for false.

© Copyright 1974 to current year. A:11 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

• Logical operators. See Logical Operators.


• Logical functions. See Logical Functions.

A.3 Numeric (Real) Expressions


In expressions, integers are treated as reals; they are fully interchangeable. Numeric
expressions can contain:
• Numbers, for example: 32, 10.1.
• Numbers can be given as as integer exponents, for example: 10 exp 5, and 5 E 6.
• Numbers be qualified by unit names.
• 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.

A.3.1 Real Physical Quantities with Units


Numbers can be qualified by an appended unit string. Most common are the standard MM,
M/etres, IN/ches, FT. However any of the standard units supported by the system (refer to
Database Management Reference Manual) can be used together with most combinations of
them in compound unit strings. Feet and inches can also be shown as in 10'6.
Such values are always internally converted to internal database units so that any
processing, comparison etc., done with these values is always done consistently and in the
same units.
Function arguments if not purely numeric must be consistent with each other and the
function itself. For example trigonometric functions (SIN, COS etc.) must have arguments
defined in angle units (in any at all). General functions like MIN, MAX must have all
arguments which have units consistent with the same physical quantity (e.g. units of length).
Arithmetic expressions must add and subtract unit consistent quantities.
Multiplication and division will generate reals of the same physical quantity (but scaled) if
only one value has units, or a real of a new physical quantities if both have. For example
there is a difference between (5 * 10inch) and (5mm * 10inch) which are 50inch and 1.9685
square inches respectively.
When numbers have units that are not consistent with each other, or the function or
expression they are being used then warnings, and sometimes (for serious problems) errors
are raised.

© Copyright 1974 to current year. A:12 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

A.3.2 Numeric (Real) Operators


The numeric operators available are:

Operator Comments

+ Addition.

- Subtraction.

* Multiplication.

/ Division.

A.3.3 ADD and SUBTRACT (+ and -)

Synopsis number + number -> number


number - number -> number
+ number -> number
- number -> number
Description Add or subtract two numbers. They can also be used as
unary operators at the beginning of a parenthesised sub-
expression.

Side Effects Units are consolidated across add and subtract.

Example 1 + 2 -> 3.0


1 - 2 -> 1.0
+ 1 -> 1.0
- 1 -> -1.0
Errors Floating point underflow.

A.3.4 MULTIPLY and DIVIDE (* and /)

Synopsis number * number -> number


number / number -> number
Description Multiply or divide two numbers. They can also be used as
unary operators at the beginning of a parenthesised sub-
expression. Numeric underflow is not considered to be an
error and neither is it flagged as a warning. The result returned
is zero.

© Copyright 1974 to current year. A:13 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

Side Effects Units are consolidated across Multiply and Divide. The
dimension of the result of the expression is determined from
the combination of all the values being combined. For
example 1kg / (1m * 1m *1m ) will give a density of 1kg/m3.

Example 2 * 3 -> 6.0


2 / 3 -> 0.666666666
Errors Divide by zero.

A.3.5 Numeric (Real) Functions


The numeric functions available are:

Function Comments
ABS ( number1 ) Gives the absolute value of a number
ACOS ( number1 ) Gives the arc cosine of a number, in degrees.
ASIN ( number1 ) Gives the arc sine of a number, in degrees.
ATAN ( number1 ) Gives the arc tangent of a number, in degrees.
ATANT ( number1, number2 ) Gives the arc tangent of number1/number2, in
degrees, with the appropriate sign.
ALOG ( number1 ) Gives the exponential function (natural anti-log)
of a number.
ARRAY(pos or dir or ori) Converts a position, direction or orientation
value or attribute into three numbers.
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.
COMPONENT dir OF pos2 Gives the magnitude of a vector drawn from E0
N0 U0 to pos2, projected in the direction dir1.
INT ( number1 ) Gives the truncated integer value of a number.
SIN ( number1 ) Gives the sine, cosine or tangent value of a
number (considered to be in degrees).
COS ( number1 ) Gives the sine, cosine or tangent value of a
number (considered to be in degrees).
TAN ( number1 ) Gives the sine, cosine or tangent value of a
number (considered to be in degrees).
LENGTH ( text1 ) Gives the length of text1.
LOG ( number1 ) Gives the natural logarithm of a number.
MATCH ( text1, text2 ) Gives the position of the beginning of the
leftmost occurrence of text2 in text1. If text2
does not occur in text1, 0 is returned.

© Copyright 1974 to current year. A:14 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

Function Comments
MAX ( number1, number2[ , Gives the maximum value of the arguments.
number3 [. . .]]) )
MIN ( number1, number2[ , Gives the minimum value of the arguments.
number3 [. . .]]) )
NEGATE Multiply a number by -1.0.
NINT ( number1 ) Gives the nearest integer to a real. NINT(N+0.5)
is equal to N+1 if N is positive or equal to zero,
to N if N is negative.
OCCUR ( text1, text2 ) Gives the number of times string text2 occurs in
string text1.
REAL ( text1 ) Try to read a number at the beginning of text1.
POWER ( number1, number2 ) Gives the value of number1 raised to the power
number2.
SQRT ( number1 ) Gives the square root of a number.
VVALUE ( variable-name ) Used for late evaluation of variables. Gives a
real value.

ABS

Synopsis ABS ( number1 ) -> number


Description Returns the absolute value of a real.

Side Effects None.

Example ABS ( -3.2 ) -> 3.2


Errors None.

ACOS, ASIN, ATAN and ATANT

Synopsis ASIN ( number1 ) -> number


ACOS ( number1 ) -> number
ATAN ( number1 ) -> number
ATANT ( number1, number2 ) -> number

© Copyright 1974 to current year. A:15 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

Description Return the arc-cosine, arc-sine or arc-tangent of a number, in


degrees.
ATANT returns the arc-tangent of number1/number2 with
the appropriate sign. ATANT is useful where the second value
is near or equal to zero.
For example, (6 0 ATANT) will give the correct result of 90
degrees, but (6 0 D ATAN) will indicate an error when trying to
divide by zero.

Side Effects None.

Example ACOS ( 0.8660254 ) -> 30


Errors Argument of ACOS or ASIN out of range [-1.0,+1.0]
ATANT (0.0,0.0) is undefined.

ALOG

Synopsis ALOG ( number1 ) -> number


Description Return the exponential function (natural anti-log) of a number.

Side Effects Numeric underflow causes the result to be set to zero.

Example ALOG( -0.7 ) -> 0.4965853


Errors Floating point overflow.

ARRAY

Synopsis ARRAY(pos or dir or ori) -> number


Description Converts a position, direction or orientation value or attribute into
three numbers.

Side Effects None

Example ARRAY(e100 ) -> 100 0 0


Errors None.

ARRAYSIZE

Synopsis ARRAYSize ( variable-name ) -> number


Description Give the size of an array variable.

Side Effects If the array variable does not exist, the result is undefined.

© Copyright 1974 to current year. A:16 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

Example ARRAYSIZE(!array) -> 2.0


Errors The variable is a scalar variable and not an array variable.
The variable is an array variable element and not an array
variable.

ARRAYWIDTH

Synopsis ARRAYWIDTH ( variable-name ) -> number


Description Give the largest display with of any string in array variable_name.

Side Effects None.

Example If an array contains the following values:


!ARRAY[1] ’Bread’
!ARRAY[2] ’is’
!ARRAY[3] ’for’
!ARRAY[4] ’life,’
!ARRAY[5] ’not’
!ARRAY[6] ’just’
!ARRAY[7] ’for’
!ARRAY[8] ’breakfast’
Then
ARRAYWIDTH(!ARRAY -> 9
i.e. the length of ’breakfast’.

Errors The variable is a scalar variable and not an array variable.


The variable is an array variable element and not an array variable.

COMPONENT ... OF ...

Synopsis COMPonent dir1 OF pos2 -> text


Description Returns the magnitude of a vector drawn from E0 N0 U0 to pos2,
projected in the direction dir1.

Side Effects None.

Example COMP E 45 N of N 0 E 100 U 50 -> 70.710


Errors None.

© Copyright 1974 to current year. A:17 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

SINE, COSINE and TANGENT

Synopsis SINe ( number1 ) -> number


COSine ( number1 ) -> number
TANgent ( number1 ) -> number
Description Return the sine, cosine or tangent value of a number (considered
to be in degrees).

Side Effects None.

Example COS ( 0.0 ) -> 1.0


TAN ( 45.0 ) -> 1.0
Errors Division by zero for TAN if the sine is (nearly) equal to zero.

INT

Synopsis INT ( number1 ) -> number


Description Return the truncated integer value of a number.

Side Effects None.

Example INT ( 1.6 ) -> 1.0


INT ( -23.7 ) -> -23.0
Errors Integer overflow.

LENGTH

Synopsis LENgth ( text1 ) -> number


Description Return the length of text1.

Side Effects None.

Example LENGTH ( ’abcdef’ ) -> 6.0


LENGTH ( ’’ ) -> 0.0
Errors None.

ALOG

Synopsis LOG ( number1 ) -> number


Description Return the natural logarithm of a number..

© Copyright 1974 to current year. A:18 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

Side Effects None.

Example LOG( 3 ) -> 1 0986123


Errors Negative arguments.

MATCH

Synopsis MATch ( text1 , text2) -> number


Description Return the position of the beginning of the leftmost occurrence
of text2 in text1. If text2 does not occur in text1, 0 is returned

Side Effects None.

Example MATCH ( ’abcdef’ , ’cd’ ) -> 3.0


MATCH ( ’abcdef’ , ’x’ ) -> 0.0
MATCH ( ’abcdef’ , ’’ ) -> 1.0
Errors None.

MAX and MIN

Synopsis MAX ( number1 , number2 [ , -> number


number3 [ ... ] ] )
MIN ( number1 , number2 [ , -> number
number3 [ ... ] ] )
Description Return the maximum or minimum value of the arguments.

Side Effects None.

Example MAX ( 1 , 3.4 ) -> 3.4


MIN ( 7.6 , -12.33 , 2.3 ) -> -12.33
Errors None.

NEGATE

Synopsis NEGate ( number1 ) -> number


Description Multiply a real by -1.0.

Side Effects None.

Example NEG ( 1 ) -> -1.0


Errors None.

© Copyright 1974 to current year. A:19 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

NINT

Synopsis NINT ( number1 ) -> number


Description Return the nearest integer to a real. NINT(N+0.5) is equal to
N+1 if N is positive or equal to zero, to N if N is negative.

Side Effects None.

Example NINT ( 1.1 ) -> 1.0


NINT ( -23.7 ) -> -24.0
NINT ( 1.5 ) -> 2.0
NINT ( -11.5 ) -> -12.0
Errors Integer overflow.

OCCUR

Synopsis OCCUR(text1, text2) -> integer

Description Counts the number of times string text2 occurs in string text1

Side Effects None.

Example OCCUR (’ABBACCBBBBBAB’, ’BB’) -> 3


OCCUR(’ZZZZZZZZZZZ’, ’A’) -> 0
Errors None..

REAL

Synopsis REAL ( text1 ) -> number


Description Try to read a real number at the beginning of text1.
Note that if text is in the form of an exponent, (-12E-1 in the
third example), there must be no spaces in it.
Note: this function was formerly called NUMBER.

Side Effects Numeric underflow causes the result to be set to zero.

Example REAL ( ’12.34’) -> 12.34


REAL ( ’ 7.23 E 3 meters’ ) -> 7.23
REAL ( ’ -12E-1 meters ’ ) -> -1.2
Errors Unable to convert the text into a real number.

© Copyright 1974 to current year. A:20 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

POWER

Synopsis POWer ( number1 , number2 ) -> real


Description Return the value of number1 raised to the power number2.

Side Effects Units are consolidated across POWER. The dimension of the
result of the function is determined from the input quantities.

Example POWER (2inch, 3) = 8cubic inch or 8in3


Errors Floating point overflow.
Zero first argument and non-positive second argument
(effectively divide by zero).
Negative first argument and non-integer second argument.

SQRT

Synopsis SQrt ( number1 ) -> number


Description Return the square root of a real.

Side Effects Units are consolidated across SQRT. The dimension of the
result of the function is determined from the input quantities.

Example SQRT (16METRE2) = 4Metre


Errors Negative argument.

VVALUE
REAL(string) and VVAL(!stringvar) functions:
These will return the value of the number in the string IGNORING any unit qualifier.
The unit qualifier must still be a valid unit qualifier. This is done so that output from $! and
VAR ! combinations of commands can still be accepted by the REAL function and other
functions with or without unit qualifiers appended
VVALUE is used for the late evaluation of variables.

Synopsis VVALue( variable_name ) -> number


VVALue( variable_name , -> number
number )

© Copyright 1974 to current year. A:21 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

Description With one argument, returns value of the scalar variable or


value of the array variable element as a number.
With two arguments, returns value of the element
corresponding to the index number as a number.
See also VLOGICAL, used for late evaluation when a logical
result is required, and VTEXT, used for late evaluation when a
text result is required.

Side Effects If the scalar variable, the array variable or the array variable
element does not exist, the result is undefined.

Example VVAL ( !array[1] ) -> 1.0


VVAL ( !array , 2 ) -> 0.0
Errors Scalar variable may not be indexed. For example, VTEXT
(!var[1]) ) will return an error.
Array variable must have an index. For example, VTEXT
( !array ) ) will return an error.
The string can not be converted to a number.

A.3.6 Real Arrays


Real array expressions can contain attributes of type real array, for example: DESP.

A.4 Using IDs in Expressions


IDs can be used in expressions. IDs can be any of the following:
• Element name, for example: /VESS1.
• Refno, for example: =23/456.
• Element type further up the hierarchy, for example: SITE.
• Number within member list, for example: 3.
• Type and number within member list, for example: BOX 3.
• NEXT, PREV for next, previous within current list. Optionally with a count and/or
element type, for example: NEXT 2 BOX, LAST CYL.
• NEXT, PREV MEMBER for next, previous within member list. Optionally with a count
and/or element type.
• If the element type given is only valid as a member then MEMBER is assumed. For
example, NEXT BOX at an EQUIPMENT will assume MEMBER.
• FIRST, LAST for first and last in current list. Optionally with a count and/or element
type.
• FIRST, LAST MEMBER for first and last in member list. If the element type given is only
valid as a member then MEMBER is assumed.
• END to navigate up from current list.
• END is similar to owner but not quite the same. For example, if the current element is a
GROUP MEMBER, and it has been reached from the GROUP then END will return to
the group but OWNE will go to the true owner.
• Attribute of type ref, for example: CREF

© Copyright 1974 to current year. A:22 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

• SAME to mean last current element


• NULREF to mean =0/0
• CE for the current element
• ’OF’ may be used to nest the options indefinitely. For example:
SPEC OF SPREF OF FLAN 1 OF NEXT BRAN.
• This denotes the SPEC element owing the SELE element pointed to by the SPREF
attribute on the first FLANGE of the next BRANCH. ILEAVE TUBE, IARRIV TUBE,
HEAD TUBE, TAIL TUBE can be added to denote tube. For example:
HEAD TUBE OF /BRAN1.
• An error will occur if there is no implied tube for the element concerned.
ID arrays can also be used in expressions. For example, CRFA.
Note: Some of the ID syntax clashes with other types. To allow for this, an id expression
may always be preceded with the keyword ID. For example, ID 3 will mean the third
member of the current list rather than a number of value 3.

A.5 Positions, Directions and Orientations in


Expressions (PDMS only)

A.5.1 Using Positions in Expressions


The basic ways of defining a position are:
• Position attribute plus optional WRT. For example:
POS OF /VESS1 WRT /* or P1 POS OF /CYL2
• Cartesian position. For example:
N 45 W 20000 U 1000
• Cartesian position from an element. For example:
N 1000 FROM /ATEST.
• Cartesian position from a ppoint. For example:
N 1000 FROM P1 OF /BOX2.
• Cartesian position from an attribute. For example:
N 1000 FROM POSS OF /SCTN1
• Any numeric value within a position may itself be an expression. For example: the
following is a valid position expression
N (DESP[1] + 10) E
The Cartesian position may optionally be followed by WRT to specify the axis system. See
WRT (PDMS Only).

A.5.2 WRT (PDMS Only)


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

© Copyright 1974 to current year. A:23 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

answer is required relative to the owner axis system and this is taken as the default. For
example:

Q POS $ will return the position of the current element


$ relatively to its owner.

Q POS OF /EQUIP1 $ will return the position of EQUIP1 relative to its


$ owner.

If we require the result in some other axis system then the WRT keyword is used. For
example:

Q POS WRT /* $.for the position in world coordinates.

When we specify a Cartesian coordinate we are dealing with a relative position.


For example, ’N 10’ is meaningless until we specify the axis system, or default to an axis
system.
Again we use WRT to do this, although it is important to note that in this case we are going
from a relative position to an absolute position (in the previous example WRT was used to
go from an absolute position to a relative one).
For example:

N 100 WRT /BOX1 $ specifies an absolute position in world space


$ which is N100 of /BOX1.

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
A SITE at (0,0,0) With default (World) orientation
A ZONE at (100,0,0) With default (World) orientation
An EQUIPMENT at (100,0,0) With orientation ’N IS E
A BOX at (-100,0,0) With default (World) orientation

© Copyright 1974 to current year. A:24 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

Figure A:1. Results of WRT

The result of Q (N 100 WRT /BOX1), shown as ⊗ in , will depend on the current element.

Location Result
World (300,100,0), in World coordinates.
Site (300,100,0) in World coordinates because the World
is the owner of the current element.
Zone (300,100,0) in World coordinates, because the Site is
the owner of the current element, and the Site
coordinates are the same as the World coordinates.
Equipment (200,100,0), which is the position relative to its
owner, the Zone.
Box (100,100,0) which is the position relative to its owner,
the Equipment.

WRT can be further qualified by FROM.

A.5.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.

© Copyright 1974 to current year. A:25 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

Consider the following:

Item Comments
A SITE at (0,0,0) With default (World) orientation
A ZONE at (100,0,0) With default (World) orientation
An EQUIPMENT at (100,0,0) With orientation ’N IS E
A BOX at (-100,0,0) With default (World) orientation

Figure A:2. The Effect of FROM

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.
Equipment (100,200,0).

Note: The default axis for the result is the Zone.


Box (200,0,0), because the default axis for the result is
the Equipment.

© Copyright 1974 to current year. A:26 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

The result of ’Q (N 100 WRT /BOX1 FROM /* ) is different:

Location Result
Site and Zone (100,0,0)
Equipment (0,0,0)
Box (0, -100, 0), because the axis for the result is the
Equipment.

The result of ’Q (N 100 FROM /* )’ is different yet again.


For this we cannot mark an absolute point on the diagram since the default WRT will vary
with the current element. In fact for the SITE, ZONE, EQUI the point ⊗ is marked in , and for
the BOX the point coincides with the ZONE.

Figure A:3. Varying WRT

Location Result
Site and Zone (0,100,0)
Equipment (-100,100,0), because the default result axis is the
Zone.
Box (0, -100, 0), because the axis for the result is the
Equipment.

A.5.4 Comparing Positions


Two positions can be compared with EQ, NE, GT, LT, GE or LE. The pairs of coordinates are
only compared in the coordinate axes for which the two positions are defined. A position
attribute always has all three coordinates defined.

© Copyright 1974 to current year. A:27 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

For positions entered by the user, only those coordinates which are given by the user are
defined. For example:

’N10U3’ $ only the Y and Z coordinates are defined,


$ while the X coordinate remains undefined

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

’POS EQ W1S2D3’ $ This evaluates to true only if POS of the current $


element is (-1,-2,-3).

’POS GT N10’ or ’N10 LE $ Only the second coordinate of POS is compared;


POS’
$ if it is greater than 10, then the result is true.

’E10N10 GT E0N0’ $ Is true because the inequality is verified for the X


$ and Y axis (both coordinates are undefined for
$ the Z axis, so it is ignored).

’E10N0 GT E0N0’ $ Is false because the Y components are different $


axes.

’E10N0 GT E0U100’ $ Is true. Although no comparison can be


$ performed n either the Y or the Z axis, because
$ the components are not present in both position
$ constants, the comparison is true in the X
$ component.

’N10 EQ W4D7’ $ Is undefined (no comparison is possible).

See also Precision of Comparisons, for tolerances in comparing numbers.

A.5.5 POLAR
The POLAR keyword allows positions to be defined in terms of a distance in a particular
direction from a point.

© Copyright 1974 to current year. A:28 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

The syntax is:

POLAR dir DISTance expr -+- FROM -+- pos -----.


| | |
| ‘- point ---|
| |
‘--------------------+--->

If FROM is not specified the default is the origin of the owner.


For example:

POLAR N 45 E DIST 20M FROM U 10 M


POLAR AXES PL OF PREV DIST ( ABORE * 10 ) FROM PL OF PRE V

A.5.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.

© Copyright 1974 to current year. A:29 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

• The CLOSEST keyword, which will find the closest element in a particular direction.
The syntax is:

>- CLOSEST type -+- WITH exp -.


| |
‘------------+- DIRECTION dir -+- EXTENT val -.
| |
‘--------------+--> cont

continued >-+- AFTER val -.


| |
‘-------------+- FROM ? -.
| |
‘----------+-->

• In the above graph the keywords are:


• EXTENT, which is how far to search in the direction specified, default 10M
• AFTER, or the distance along vector after which to start search, default 0M
• FROM, which specifies an alternative start point other than current element. This is of
particular use for a branch where you might want to specify the HPOS or TPOS.
• Examples are:
CLOSEST DIR E
CLOSEST BOX WITH ( PURP EQ ’FLOO’ ) DIR D WRT /
* EXTENT 20M
CLOSEST VALVE DIR N 45 U FROM E100 N200 U300
CLOSEST BRAN HANG AFTER 2M

A.5.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.

© Copyright 1974 to current year. A:30 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

• The syntax is:

.----<--------.
/ |
>-- 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 Comparing Positions.

A.6 Text Expressions


Text expressions can contain the following:
• A text string, which must be enclosed in quotes. For example: ’FRED’.
• A PDMS attribute of type text or word. For example: FUNC
• A single element of a word array attribute. For example: ELEL[2].
• Text operators
• Text functions

A.6.1 Text Operator


The text operator available is +, used for concatenation.

Synopsis text1 + text2 -> text -> text


Description Return the concatenation of two text strings.

Side Effects None.

Example ’no’ + ’space’ -> ’nospace’


Errors Text result too long.

© Copyright 1974 to current year. A:31 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

A.6.2 Text Functions


The text functions available are:

Function Comments
AFTER
BEFORE
DISTANCE
LOWCASE, UPCASE
PART
REPLACE
STRING
SUBS, DSUBS
TRIM
VTEXT

AFTER

Synopsis AFTER ( text1 , text2 ) -> text


Description Return the substring of text1 which is after the leftmost
occurrence of text2 in text1.
If text2 does not occur in text1, the null string is returned.
Side Effects None.
Example AFTER ( ’abcdef’ , ’cd’ ) ->’ef’
AFTER ( ’abcdef’ , ’x’ ) -> ’’
AFTER ( ’abcdef’ , ’’ ) -> ’abcdef’
Errors None.

BEFORE

Synopsis BEFORE ( text1 , text2 ) -> text


Description Return the substring of text1 which is before the leftmost
occurrence of text2 in text1. If text2 does not occur in text1,
text1 is returned.

Side Effects None.

Example BEFORE ( ’abcdef’ , ’cd’ ) -> ’ab’


BEFORE ( ’abcdef’ , ’x’ ) -> ’’
BEFORE ( ’abcdef’ , ’’ ) -> ‘’
Errors None.

© Copyright 1974 to current year. A:32 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

DISTANCE

Synopsis DISTance ( number1 ) -> text


DISTance( number1, logical1, -> text
logical2, logical3, number2,
logical4)
Description For the one-argument form, if the current distance units are
FINCH, text is the conversion of the decimal inches value
number1 into the format ’aa’bb.cc/dd’. Otherwise, text is the
STRING conversion of number1.
The six-argument form is more complex. The format is:
DIST/ANCE (distance, feet, usformat,
fraction, denom_or_dp, zeros)
where:
• distance is the numeric distance in inches that is to be
formatted.
• feet is a logical flag set to true if output is to be in feet and
inches and to false if output is to be in inches.
• usformat is a logical set to true if US format is to be used
or false if PDMS format is to be used.
• fraction is a logical set to true if the fractional component
is to be output as a fraction or false if to be output as a
decimal denom_or_dp is a number representing the
largest denominator if fraction is TRUE or representing
the number of decimal places if it is FALSE.
• zeros is a logical set to true if zeros are to be shown
when that component of the output has no value

PDMS
For both US and PDMS 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.
• If feet have been output, the inches will be at least two
characters wide. Numbers less than ten will be preceded
by a space if US format is being used or a zero if PDMS
format is used. A zero will be output if there are no whole
inches.
• If no feet have been output and the distance is at least an
inch, then the number of inches is displayed but without
any preceding spaces. Only if zeros is true will a 0 be
output for distances of less than an inch.
• If inches have been output and fraction is true, these will
be followed by a decimal point (.).

© Copyright 1974 to current year. A:33 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

• If fraction is TRUE and the number has a fractional


component, then the numerator and the denominator are
shown separated by a slash (/). This is then blank padded
up to the width that the largest numerator and
denominator would take.
• If fraction is FALSE and the number of decimal places is
greater than zero, then the decimal point (.) is displayed
followed by the remainder up to the appropriate number
of decimal places. If the number of decimal places is 0
then the decimal point is not shown either.
• If US format has been selected then the following
additional rules are observed on output:
• The (’) after the number of feet is followed by a dash
(-).
• The decimal point separating the inches from the fraction
is replaced by a space.
• The inches and fraction of inches are followed by a
double quote(”).
Side Effects None.
Example If the current distance units are FINCH:
DISTANCE ( 17.5 ) -> ’1’5.1/2’
Some examples, where the current distance units are feet and
inches:
DIST(34.5,TRUE,TRUE,TRUE,100,TRUE) -> 2’-10.1/2.
DIST(34.5,FALSE,TRUE,FALSE,1,TRUE) -> 34.5”
DIST(34.5,FALSE,TRUE,TRUE,4,FALSE) -> 34 1/2”
DIST(128.5,TRUE,FALSE,TRUE,2,TRUE) -> 10’08.1/2”
The following table shows sets of options that could have been
chosen and the format of the output produced for different
numbers. Blanks output by the system are represented by
underscores(_).

Distance Feet & Inch Feet & Inch Inches Inches Feet & Inch
US US US US PDMS
Fraction Fraction Decimal Fraction Fraction
Denom 100 Denom 32 DP 1 Denom 2
Zeros No Zeros Zeros Denom 4 Zeros
No Zeros

128.5 10’-_8_1/2”___ 10’-_8_1/2”__ 128.5” 128_1/2” 10’08.1/2

120.0 10’-_0”_______ 10’-_0”______ 120.0” 120”____ 10’00____

11.5 0’-11_1/2”___ 11_1/2”__ 11.5” 11_1/2” 0’11.1/2

0.75 0’-_0_3/4”___ 3/4”__ 0.8” 3/4” 0’01____

0.0 0’-_0”_______ ______ 0.0” ____ 0’00____

-10.0 -0’-10”_______ -10”______ -10.0” -10”____ -0’10____

Errors The value is too big to be converted.

© Copyright 1974 to current year. A:34 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

LOWCASE and UPCASE

Synopsis UPCase ( text1 ) -> text


LOWCase ( text1 ) -> text
Description Return an upper or lower case version of text1.

Side Effects None.

Example UPCASE ( ’False’) -> ’FALSE’


LOWCASE ( ’False’) -> ’false’
Errors None.

PART

Synopsis PART(text1, number1) -> text


PART(text1, number1 , -> text
text2)
Description With two arguments, returns the number1 component of
text1 assuming that text1 is split on any whitespace
characters. If number1 is negative, counting of components
starts from the right.
With three arguments, as above, but use text2 as the
separator on which splitting takes place.
If the user gives a part number higher than the number of
components in the string, the function returns an empty string.

Side Effects None.

Example PART (’x-y-z’, 1, ’-’ -> ’x’


PART (’a b c d e’, 4-> ’d’
PART (’/PIPE45/B9’, -1, ’/’) -> ’B9’
PART(’aa bb cc’, 2) -> ’bb’
PART(’aa-bb-cc’,3,’-’) -> ’cc’
Errors None.

REPLACE

Synopsis REPLace (text1,text2,text3) -> text


REPLace(text1,text2,text3,i -> text
nt1)
REPLace(text1,text2,text2,i -> text
nt1,int2)

© Copyright 1974 to current year. A:35 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

Description Replace search string text2 in input string text1 with


replacement string text3.
If int1 is given this specifies the first occurrence of text2 at
which to start replacement.
If int2 is given this specifies the number of replacements to
make. int1 and/or int2 may be negative to indicate that the
direction is backwards.
Side Effects None.
Example Three arguments:
REPLACE (’cat dog cat cat dog ’, ’cat’,
’dog’ ) -> ’dog dog dog dog dog’
All occurrences of ’cat’ are replaced with ’dog’.
Four arguments: start occurrence given:
REPLACE (’cat dog cat cat cat dog’, ’cat’,
’dog’, 2) -> ’cat dog dog dog dog dog
All occurrence of ’cat’ from the second occurrence onwards
are replaced with ’dog’
REPLACE(’cat dog cat cat dog’ ,’cat’,
dog’, -2 -> ’dog dog dog cat dog’
All occurrences starting at the second occurrence from the
end of the string and moving backwards are replaced Note
that a negative fourth argument without a fifth argument
implies backwards mode.
Five arguments: start occurrence and number of
replacements given. Replace two occurrences of ’cat’ starting
at second occurrence:
REPLACE (’cat dog cat cat cat,
’cat’,’dog’, 2,2) -> ’cat dog dog dog cat’
Replace two occurrences in backwards direction starting at
the second occurrence:
REPLACE (’cat dog cat cat cat’, ,’cat’,
’dog’, 2, -2) -> ’dog dog dog cat cat ’
Replace two occurrences in forwards direction starting at
second occurrence from the end of the string:
REPLACE (’cat cat cat cat dog’, ’cat’,
’dog’,-2,2) -> ’cat cat dog dog dog’
Replace two occurrences in backwards direction starting at
second occurrence from the end of the string.
REPLACE (’cat cat cat cat dog’,’cat’,
’dog’, -2, -2) -> ’cat dog dog cat dog’

© Copyright 1974 to current year. A:36 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

The following examples all give the same result:


REPLACE(’cat1 cat2 cat3 cat4 cat5 cat6 cat7 cat8
cat9 cat10’, ’cat’, ’dog’, 4, 2)
REPLACE(’cat1 cat2 cat3 cat4 cat5 cat6 cat7 cat8
cat9 cat10’, ’cat’, ’dog’, 5, -2)
REPLACE(’cat1 cat2 cat3 cat4 cat5 cat6 cat7 cat8
cat9 cat10’, ’cat’, ’dog’,-6, -2)
REPLACE(’cat1 cat2 cat3 cat4 cat5 cat6 cat7 cat8
cat9 cat10’, ’cat’, ’dog’, -7, 2)

in each case, the output string is


’cat1 cat2 cat3 dog4 dog5 cat6 cat7 cat8 cat9
cat10’
If the replacement string text3 is a null string the required
number of occurrences of the search string text2 are
removed. For example:
REPLACE (’AAABBABZ’, ’B’, ’’) -> ’AAAAZ’
REPLACE (’AAABBABZ’, ’B’, ’’, -1, -1) ->
’AAABBAZ’
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’
If no occurrence of the search string text2 is found, the input
string text1 is returned unchanged. For example:
REPLACE( ’AAAAAA’,’B’,’C’) ->
’AAAAAA
If required occurrence int1 is not found the input string text1 is
returned unchanged. For example:
REPLACE(’AAAAAA’, ’A’, ’B’, 10 ) ->
’AAAAAA’
If the number of replacements required int2 is greater than the
actual number of occurrence from the specified start
occurrence, replacements are made up to the end of the string
( or beginning in backwards mode). For example:
REPLACE(’AAAAAA’, ’A’, ’B’, 2, 8) ->
’ABBBBB’
REPLACE (’AAAAAA’, ’A’, ’B’, -3, 8) ->
’BBBBAA’

© Copyright 1974 to current year. A:37 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

STRING

Synopsis STRing ( any scalar type ) -> text


STRing ( number , text1 ) -> text
STRing ( pos , text1 ) -> text
Description Turns a value into a text string.
With a single argument the STRING function can be applied to
the following scalar data types:
• Numeric
• Logical
• Id
• Position
• Direction
• Orientation
With only one argument, decimal places are output to give a
maximum of six significant figures. Trailing zeros are always
removed in this case.
With two arguments the data type may be either numeric
(scalar) or position or direction. With two arguments, convert a
number or position into a text string using the format
described by text1, which may take any of the values between
’D0’ and ’D6’ (or ’d0’ and ’d6’), where the number indicates the
number of decimal places.
For numbers, STRING always outputs values as millimetres. If
unit conversion is needed then the DIST function should be
used. For positions, the current distance units are used.

Side Effects None.

Example STRING ( 1 ) -> ’1’


STRING ( 1 , ’D3’ ) -> ’1.000’
STRING ( 1.23456789 ) -> ’1.23457’
STRING(1.1230000) ->’1.123’
STRING ( 1.23456789 , ’D3’ ) -> ’1.235’
STRING (9*9 LT 100) -> ’TRUE’
STRING (OWN OF CE) -> ’/PIPE1’
STRING(POS) -> ’W1000 N20000 U18000’
STRING(POS, ’D4’ ) -> ’W10000.1234 N20000.1234
U18000.1234’
STRING(HDIR OF /PIPE1-1) -> ’D’
STRING(E 22.0125 N, ’D2’) -> ’E 22.01 N’
STRING (ORI OF NEXT) -> ’Y IS D AND Z IS U’

Errors

© Copyright 1974 to current year. A:38 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

SUBSTRING

Synopsis SUBString ( text1 , number1 ) -> text


SUBString ( text1 , number1 , -> text
number2 )
Description With two arguments, return the substring of text1 beginning at
the position number1 to the end of text1.
With three arguments, return the substring of text1 beginning
at the position number1 and of length number2. If number1
is negative, then counting of characters starts from the RHS of
the input string. If number2 is negative, then characters up to
and including the start position are returned.

Side Effects None.

Example SUBSTRING ( ’abcdef’ , 3 ) -> ’cdef’


SUBSTRING ( ’abcdef’ ,-3 ) -> ’abcd’
SUBSTRING ( ’abcdef’ , 3 , 2 ) -> ’cd’
SUBSTRING ( ’abcdef’ , -3, 2 ) -> ’de’
SUBSTRING ( ’abcdef’ , 3 , -2 ) -> ’bc’
SUBSTRING ( ’abcdef’ , 10 ) -> ’’
SUBSTRING ( ’abcdef’ , -10 , 2 ) -> ’ab’
Errors None.

TRIM

Synopsis TRIM ( text1 ) -> text


TRIM ( text1, text2 ) -> text
TRIM ( text1, text2, text3 ) -> text
Description When only one argument is supplied, TRIM removes all
spaces to the left (leading) and right (trailing) of text1 and
returns the answer in text.
When two arguments are supplied, text2 specifies where the
spaces should be removed from: either ’L’ or ’l’ for left, ’R’ or ’r’
for right, and ’M’ or ’m’ for multiple (where multiple
occurrences of blanks are squeezed to a single spaces) or
any combination of the three key letters. So the default is ’LR’
when this field is omitted.
When the third argument text3 is also supplied, this should
only be a single character which overrides the space
character as the character being trimmed.

Side Effects None.

© Copyright 1974 to current year. A:39 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

Example TRIM ( ’ How now, brown cow ’, ’LRM’ ) ->


’How now, brown cow’
TRIM ( ’10.3000’, ’R’, ’0’ ) -> ’10.3’
Errors None.

VTEXT
VTEXT is used for the late evaluation of variables.

Synopsis VTEXT ( variable-name ) -> text


VTEXT ( variable-name , -> text
number )
Description With one argument, it gets the value of the scalar variable or
the value of the array variable element.
With two arguments, it gets the value of the element
corresponding to the index number.
The value is returned as a text string.
See also VLOGICAL used for late evaluation when a logical
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.

Example VTEXT ( !var ) -> ’hello’


VTEXT ( !array[1] ) -> ’1.00’
VTEXT ( !array , 2 ) -> ’0.00’
Errors Errors Scalar variable may not be indexed (e.g. VTEXT
(!var[1]) ).
Array variable must have an index (e.g. VTEXT ( !array ) ).

A.7 Late Evaluation of Variables in Expressions


The functions VVALUE, VLOGICAL and VTEXT are used for late evaluation of PML
variables, that is, they enable you to specify PML variables in expressions which will not be
evaluated until the expression is evaluated. For example, when you are creating a report
template, you are actually creating a macro which will run when a report is generated. All
variables in a report template must therefore be preceded by a suitable late evaluation
operator; otherwise the system will try to substitute a value for the variable when it is
entered on the form. The difference between the operators is the type of output. VVALUE is
used to output a numeric value, VLOGICAL to output a logical variable and VTEXT to output
a text variable.

© Copyright 1974 to current year. A:40 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

A.8 Attributes in Expressions


All attributes and pseudo-attributes may be recognised within expressions. Optionally they
may be followed by ’OF’ to denote a different element to the current one; e.g. POS OF /
VESS1. Brackets may be used to denote an element of an array, for example DESP[8 +
1] for the ninth value of DESP. Since syntax clashes are possible, the keyword ATTRIB
may be used to denote that an attribute follows. For example, ATTRIB E will denote the
pseudo-attribute EAST as opposed to the start of a position or direction. Attributes are
described in the Data Model Reference Manual.

A.9 Querying Expressions


All expressions may be queried. Arrays are always concatenated into a single variable.
Imperial values are always output as inch to variables. This preserves maximum accuracy.
To output in FINCH, then the DISTANCE function must be used. In general expression do
not have to be enclosed in brackets, but to be sure that other queries are not picked up by
mistake then it is advisable to do so.
Particular queries that could lead to confusion are those available both outside and inside
expressions. These are:
• Q PPOINT n
• Q POS or cartesian position
• Q ORI or cartesian orientation
The functionality may vary between outside and inside expression queries. For example, ’Q
N 100 FROM /POSS’ is not valid. It must be entered as Q N 100 FROM /POSS ).

A.10 Units in Expressions


When a user enters a literal value then the units are not necessarily known. The units for
PML variables may not be known if not input initially. Where units are known, then all
internal values are set to database units (mm for distances). The value is then converted to
the target (local) units on assignment to a variable or on output.
To cope with ’unknown’ units each value remembers its original units internally. An attempt
is then made to allow for ’unknown’ units across operators.
The internal settings for units are as follows:

Setting Comments
NONE No units. e.g. attribute OBS.
UNKN Unknown units. e.g. 10.
MM Dist/bore attribute if units are MM, or literal e.g. 10 mm.
INCH Dist/bore attribute if units are INCH/FINCH, or literal e.g. 10’.
SQIN Multiply two INCH values together, or literal e.g. 10 sq in.
CUIN Multiply SQIN by INCH, or literal e.g. 10 cu in.

On comparison, addition or subtraction of two values the following assumptions are made. If
one of the units is unknown and the other is anything other than UNKN, then the unknown

© Copyright 1974 to current year. A:41 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

value is assumed to have the same units as the known units. A suitable conversion is then
done if the known units is INCH or SQIN or CUIN.
For example:
(XLEN GT 10).
If we are working in distance units of inches, it is known that XLEN is a distance value.
Internally the value is held in mm, but the units are held as INCH. The units for ’10’ are held
as unknown. On doing the comparison, the ’10’ is assumed to be inches and thus multiplied
by 25.4 to ensure that the comparison works as expected.
Special action is also taken to preserve the correct units across multiplication, division,
POWER and SQRT, in particular the maintenance of SQIN and CUIN. In these situations,
units of %UNKN are treated as none. For example, (10 * XLEN) is assumed to result in
INCH rather than SQIN. An exception is made when a reciprocal would result from division.
For example: for (10 / XLEN) we assume that the 10 is in inches rather than none.

A.11 Precision of Comparisons


To allow for small losses of accuracy, the following tolerances are used.

Object Tolerance
Number Tolerance factor of 0.000001.
In other words, if the difference between two reals is not
greater than 0.000001* (maximum of the two values) then
the values are considered to be equal. e.g.
• (1.000001 GT 1) is FALSE as it considers 1.000001;
and 1 to be equal;
• (1.000002 GT 1) is TRUE.
Position Considered to be equal if within 0.5 mm of one another.
Direction or Orientation Considered to be equal if values are within 0.005.

A.12 Undefined Values


In order to permit expressions like ((DIAM GT 200.0) OR (TYPE EQ ’BOX’)),
expressions must be able to cope with undefined values. Generally, applying an operator to
one or more undefined arguments has an undefined result.
Two exceptions are: the use of the AND operator with a false argument, will result in FALSE,
regardless of whether or not the remainder of the arguments are defined; and OR which
returns TRUE if any of its arguments is TRUE. For example, consider applying the above
expression when the current element is a box. DIAM is undefined; therefore (DIAM GT
200.0) is also undefined. However, (TYPE EQ ’BOX’) is certainly true and so the final
result of the whole expression evaluates to TRUE.
An undefined result occurs when:
• One of the operands or arguments of a function (except some cases of AND and OR) is
undefined.
• An attribute is unavailable for the corresponding element (e.g.’DIAM OF OWNER’
when the current element is a box).

© Copyright 1974 to current year. A:42 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

• An element is undefined (e.g. ’OWNER’ when the current element is the WORLD).
• An attribute is unset (e.g. text attribute or UDA of length 0).
• A variable is undefined (e.g. ’VVAL(!ARC6)’ where !ARC6 has never been
initialised).
• Two position constants are compared with GT, GE, LT or LE and they have no common
coordinates (e.g. ’N10 EQ E5’).
• If the result of the whole expression is undefined, an error occurs.

A.13 Unset Values


A particular class of undefined values are unset values. The concept exists for attributes
which are valid for a given element, but for which no value has been assigned. Typically
these may be elements of an array, or ’word’ attributes. References of value =0/0 are also
treated as unset.
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:

Operator When Applied to an UNSET


EQ, GT, GE, LT, LE Results in FALSE.
NE Results in TRUE.
OR , AND Values are treated as FALSE.

For example, if DESP(2) and LVAL(3) are unset then:


(DESP(2) GT 99) -> False
(DESP(2) NE 33) -> True
(:LVAL(3) AND TRUE) -> False

© Copyright 1974 to current year. A:43 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual
PML 1 Expressions

© Copyright 1974 to current year. A:44 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual

Index

A COSINE . . . . . . . . . . . . . . . . . . . . . . . . A:18
CREATED . . . . . . . . . . . . . . . . . . . . . . . A:7
ABS . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:15
ACOS . . . . . . . . . . . . . . . . . . . . . . . . . . A:15
ADD . . . . . . . . . . . . . . . . . . . . . . . . . . . A:13
D
AFTER . . . . . . . . . . . . . . . . . . . . . . . . . A:32 DEFINED . . . . . . . . . . . . . . . . . . . . . . . . A:7
ALOG . . . . . . . . . . . . . . . . . . . . . A:16, A:18 DELETED . . . . . . . . . . . . . . . . . . . . . . . . A:8
AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:3 DISTANCE . . . . . . . . . . . . . . . . . . . . . . A:33
AREA command ( Design and ) . . . . . 2:203 format . . . . . . . . . . . . . . . . . . . . . . . A:33
Area view gadget . . . . . . . . . . . . . . . . 2:203 US format . . . . . . . . . . . . . . . . . . . . A:33
Area view setup mode . . . . . . . . . . . . 2:203 DIVIDE . . . . . . . . . . . . . . . . . . . . . . . . . A:13
ARRAY . . . . . . . . . . . . . . . . . . . . . . . . . A:16
ARRAYSIZE . . . . . . . . . . . . . . . . . . . . . A:16
E
ARRAYWIDTH . . . . . . . . . . . . . . . . . . . A:17
ASIN . . . . . . . . . . . . . . . . . . . . . . . . . . . A:15 EMPTY . . . . . . . . . . . . . . . . . . . . . . . . . . A:8
ATAN . . . . . . . . . . . . . . . . . . . . . . . . . . A:15 EQUAL . . . . . . . . . . . . . . . . . . . . . . . . . . A:4
ATANT . . . . . . . . . . . . . . . . . . . . . . . . . A:15 Event
Attributes Control System . . . . . . . . . . . . . . . . 3:6
in expressions . . . . . . . . . . . . . . . . A:41 Flow . . . . . . . . . . . . . . . . . . . . . . . . . 3:5
Packet . . . . . . . . . . . . . . . . . . . . . . . 3:5
B Event Driven Graphics . . . . . . . . . . . . . . 3:1
Event Packet . . . . . . . . . . . . . . . . . . . . 3:11
BADREF . . . . . . . . . . . . . . . . . . . . . . . . . A:6 Example
BEFORE . . . . . . . . . . . . . . . . . . . . . . . . A:32 Defining Pick Sequences . . . . . . . . 3:52
Boolean operators . . . . . . . . . . . . . . . . . . A:3 Repeat Element Pick . . . . . . . . . . . 3:24
Single Element Pick . . . . . . . . . . . . 3:23
C Using Pick Packets . . . . . . . . . . . . 3:54
Expressions
COLUMNFORMAT . . . . . . . . . . . . . . . . 2:36 directions in . . . . . . . . .A:28, A:29, A:31
Comparator operators . . . . . . . . . . . . . . . A:3 format . . . . . . . . . . . . . . . . . . . . A:1, A:2
Comparison precision IDS in . . . . . . . . . . . . . . . . . . . . . . . A:22
in expressions . . . . . . . . . . . . . . . . A:42 logical . . . . . . . . . . . . . . . . . . . . . . . . A:2
Components . . . . . . . . . . . . . . . . . . . . . . 3:3 logical array . . . . . . . . . . . . . . . . . . A:11
Main . . . . . . . . . . . . . . . . . . . . . . . . . 3:3 nesting . . . . . . . . . . . . . . . . . . . . . . . A:2
Secondary . . . . . . . . . . . . . . . . . . . . 3:3 numeric . . . . . . . . . . . . . . . . . . . . . A:12

© Copyright 1974 to current year. Index page i 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual

PML . . . . . . . . . . . . . . . . . . . . . . . . . A:1 LE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:5


positions in . . . . . . . . . . . . . . . . . . . A:23 LENGTH . . . . . . . . . . . . . . . . . . . . . . . . A:18
precision of comparisons . . . . . . . . A:42 Logical functions . . . . . . . . . . . . . . . . . . A:6
real . . . . . . . . . . . . . . . . . . . . . . . . . A:12 LOWCASE . . . . . . . . . . . . . . . . . . . . . . A:35
real array . . . . . . . . . . . . . . . . . . . . A:22 LT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:5
types . . . . . . . . . . . . . . . . . . . . . . . . . A:1
M
F
MATCH . . . . . . . . . . . . . . . . . . . . . . . . A:19
format distances . . . . . . . . . . . . . . . . . . A:33 MATCHWILD . . . . . . . . . . . . . . . . . . . . . A:8
FROM . . . . . . . . . . . . . . . . . . . . . . . . . . A:25 MAX . . . . . . . . . . . . . . . . . . . . . . . . . . . A:19
Functions MIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:19
logical . . . . . . . . . . . . . . . . . . . . . . . . A:6 MODIFIED . . . . . . . . . . . . . . . . . . . . . . . A:9
numeric . . . . . . . . . . . . . . . . . . . . . . A:14 Multi Discipline Route Manager . . . . . 2:108
real . . . . . . . . . . . . . . . . . . . . . . . . . A:14 MULTIPLY . . . . . . . . . . . . . . . . . . . . . . A:13

G N
Gadget NEGATE . . . . . . . . . . . . . . . . . . . . . . . A:19
2D Screen Position . . . . . . . . . . . . . 2:10 NEQUAL . . . . . . . . . . . . . . . . . . . . . . . . A:4
Anchoring . . . . . . . . . . . . . . . . . . . . . 2:7 NINT . . . . . . . . . . . . . . . . . . . . . . . . . . . A:20
BAR . . . . . . . . . . . . . . . . . . . . . . . . 2:26 NOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:5
BUTTON . . . . . . . . . . . . . . . . . . . . . 2:30 NUMBER (REAL) . . . . . . . . . . . . . . . . . A:20
COMBOBOX . . . . . . . . . . . . . . . . . 2:38 Numeric expressions . . . . . . . . . . . . . . A:12
CONTAINER . . . . . . . . . . . . . . . . . 2:42 Numeric operators . . . . . . . . . . . . . . . . A:13
Docking . . . . . . . . . . . . . . . . . . . . . . 2:7
FRAME . . . . . . . . . . . . . . . . . . . . . . 2:70 O
LINE . . . . . . . . . . . . . . . . . . . . . . . . 2:78
LIST . . . . . . . . . . . . . . . . . . . . . . . . 2:90 OBJECT . . . . . . . . . . . . . . . . . . . . . . . 2:115
OPTION . . . . . . . . . . . . . . . . . . . . 2:116 Object
PARAGRAPH . . . . . . . . . . . . . . . . 2:121 ALERT . . . . . . . . . . . . . . . . . . . . . . 2:11
Positioning . . . . . . . . . . . . . . . . . . . . 2:8 ARC . . . . . . . . . . . . . . . . . . . . . . . . 2:12
RTOGGLE . . . . . . . . . . . . . . . . . . 2:164 ARRAY . . . . . . . . . . . . . . . . . . . . . 2:21
SELECTOR . . . . . . . . . . . . . . . . . 2:171 BANNER . . . . . . . . . . . . . . . . . . . . 2:25
SLIDER . . . . . . . . . . . . . . . . . . . . 2:176 BLOCK . . . . . . . . . . . . . . . . . . . . . . 2:28
Syntax Graphs . . . . . . . . . . . . . . . . . 2:6 BOOLEAN . . . . . . . . . . . . . . . . . . . 2:28
Tagwidth . . . . . . . . . . . . . . . . . . . . . 2:10 BORE . . . . . . . . . . . . . . . . . . . . . . . 2:29
TEXTPANE . . . . . . . . . . . . . . . . . 2:191 Classification . . . . . . . . . . . . . . . . . . 2:1
TOGGLE . . . . . . . . . . . . . . . . . . . 2:193 COLLECTION . . . . . . . . . . . . . . . . 2:34
Width and Height . . . . . . . . . . . . . . . 2:9 COLUMN . . . . . . . . . . . . . . . . . . . . 2:35
GE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:5 DATEFORMAT . . . . . . . . . . . . . . . 2:43
Graphical Selection . . . . . . . . . . . . . . . . 2:74 DATETIME . . . . . . . . . . . . . . . . . . . 2:44
GT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:5 DB . . . . . . . . . . . . . . . . . . . . . . . . . 2:46
DBREF . . . . . . . . . . . . . . . . . . . . . . 2:48
I DBSESS . . . . . . . . . . . . . . . . . . . . 2:49
DIRECTION . . . . . . . . . . . . . . . . . . 2:49
IDList . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:76 EXPRESSION . . . . . . . . . . . . . . . . 2:51
IDs in expressions . . . . . . . . . . . . . . . . . A:22 FILE . . . . . . . . . . . . . . . . . . . . . . . . 2:52
INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:18 FMSYS . . . . . . . . . . . . . . . . . . . . . 2:54
FORM . . . . . . . . . . . . . . . . . . . . . . 2:57
L FORMAT . . . . . . . . . . . . . . . . . . . . 2:66
LINE . . . . . . . . . . . . . . . . . . . . . . . . 2:79
Late evaluation of expressions . . A:21, A:40 LINEARGRID . . . . . . . . . . . . . . . . . 2:88
Late evaluation of variables . . . . . . . . . A:40 LOCATION . . . . . . . . . . . . . . . . . . 2:95

© Copyright 1974 to current year. Index page ii 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual

MACRO . . . . . . . . . . . . . . . . . . . . . 2:97 Prompts


MDB . . . . . . . . . . . . . . . . . . . . . . . . 2:97 Change . . . . . . . . . . . . . . . . . . . . . . 3:9
MEASURE . . . . . . . . . . . . . . . . . . . 2:99 Published Interface . . . . . . . . . . . . . . . 3:15
MENU . . . . . . . . . . . . . . . . . . . . . . 2:101
NUMERICINPUT . . . . . . . . . . . . . 2:114 Q
ORIENTATION . . . . . . . . . . . . . . . 2:119
PLANE . . . . . . . . . . . . . . . . . . . . . 2:123 Querying
PLANTGRID . . . . . . . . . . . . . . . . . 2:127 variables and expressions . . . . . . . A:41
POINTVECTOR . . . . . . . . . . . . . . 2:134
POSITION . . . . . . . . . . . . . . . . . . 2:137 R
POSTEVENTS . . . . . . . . . . . . . . . 2:142
PROFILE . . . . . . . . . . . . . . . . . . . 2:144 REAL . . . . . . . . . . . . . . . . . . . . . . . . . . A:20
PROJECT . . . . . . . . . . . . . . . . . . . 2:143 Real arrays in expressions . . . . . . . . . . A:22
RADIALGRID . . . . . . . . . . . . . . . . 2:154 Real expressions . . . . . . . . . . . . . . . . . A:12
REAL . . . . . . . . . . . . . . . . . . . . . . 2:156 Relational operators . . . . . . . . . . . . . . . . A:3
REPORT . . . . . . . . . . . . . . . . . . . 2:161 REPLACE . . . . . . . . . . . . . . . . . . . . . . A:35
SESSION . . . . . . . . . . . . . . . . . . . 2:174 Rule Combination . . . . . . . . . . . . . . . . . 3:60
STRING . . . . . . . . . . . . . . . . . . . . 2:178
TABLE . . . . . . . . . . . . . . . . . . . . . 2:185 S
TEAM . . . . . . . . . . . . . . . . . . . . . . 2:187
Type Details . . . . . . . . . . . . . . . . . . 2:11 Section Plane . . . . . . . . . . . . . . . . . . . 2:166
UNDOABLE . . . . . . . . . . . . . . . . . 2:195 Manager . . . . . . . . . . . . . . . . . . . . 2:168
UNIT . . . . . . . . . . . . . . . . . . . . . . . 2:196 SINE . . . . . . . . . . . . . . . . . . . . . . . . . . . A:18
USER . . . . . . . . . . . . . . . . . . . . . . 2:198 SQRT . . . . . . . . . . . . . . . . . . . . . . . . . . A:21
XYPosition . . . . . . . . . . . . . . . . . . 2:209 STATE . . . . . . . . . . . . . . . . . . . . . . . . 2:185
Objects STRING . . . . . . . . . . . . . . . . . . . . . . . . A:38
Forms and Menus . . . . . . . . . . . . . . 2:4 SUBSTRING . . . . . . . . . . . . . . . . . . . . A:39
Methods Available . . . . . . . . . . . . . . 2:3 SUBTRACT . . . . . . . . . . . . . . . . . . . . . A:13
OCCUR . . . . . . . . . . . . . . . . . . . . . . . . . A:20
Operators T
logical . . . . . . . . . . . . . . . . . . . . . . . . A:3
numeric . . . . . . . . . . . . . . . . . . . . . . A:13 TANGENT . . . . . . . . . . . . . . . . . . . . . . A:18
text . . . . . . . . . . . . . . . . . . . . . . . . . A:31 Text functions . . . . . . . . . . . . . . . . . . . . A:32
OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:6 Text operator . . . . . . . . . . . . . . . . . . . . A:31
TRIM . . . . . . . . . . . . . . . . . . . . . . . . . . A:39
P
U
Packet
Add . . . . . . . . . . . . . . . . . . . . . . . . . . 3:8 UNDEFINED . . . . . . . . . . . . . . . . . . . . . A:7
Remove . . . . . . . . . . . . . . . . . . . . . . 3:9 Undefined values
PART . . . . . . . . . . . . . . . . . . . . . . . . . . A:35 in expressions . . . . . . . . . . . . . . . . A:42
Pick . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:59 Units
Filtering . . . . . . . . . . . . . . . . . . . . . . 3:59 in expressions . . . . . . . . . . . . . . . . A:41
Pick Data . . . . . . . . . . . . . . . . . . . . . . . . 3:63 UNSET . . . . . . . . . . . . . . . . . . . . . . . . . A:10
Pick Packet . . . . . . . . . . . . . . . . . . . . . . 3:30 Unset values
Pick Sequence . . . . . . . . . . . . . . . . . . . . 3:5 in expressions . . . . . . . . . . . . . . . . A:43
Pick Type . . . . . . . . . . . . . . . . . . . . . . . 3:56 US format distances . . . . . . . . . . . . . . . A:33
Picked Position Data . . . . . . . . . . . . . . . 3:64
PLATFORMGRID . . . . . . . . . . . . . . . . 2:128 V
PMLSECURELOGIN . . . . . . . . . . . . . 2:133
VERIFY . . . . . . . . . . . . . . . . . . . . . . . 2:199
PMLUSERLOGIN . . . . . . . . . . . . . . . . 2:134
View
Positions
the Stack . . . . . . . . . . . . . . . . . . . . 3:10
comparing . . . . . . . . . . . . . . . . . . . . A:27
VIEW Gadget
POWER . . . . . . . . . . . . . . . . . . . . . . . . A:21

© Copyright 1974 to current year. Index page iii 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.
Software Customisation Reference Manual

AREA View . . . . . . . . . . . . . . . . . . 2:202


PLOT View . . . . . . . . . . . . . . . . . . 2:204
VOLUME Views . . . . . . . . . . . . . . 2:206
View Gadget
ALPHA Views . . . . . . . . . . . . . . . . 2:201
ViewFinder . . . . . . . . . . . . . . . . . . . . . 2:199
VLOGICAL . . . . . . . . . . . . . . . . . . . . . . A:11
VTEXT . . . . . . . . . . . . . . . . . . . . . . . . . A:40
VVALUE . . . . . . . . . . . . . . . . . . . . . . . . A:21

W
WRT . . . . . . . . . . . . . . . . . . . . . . . . . . . A:23

© Copyright 1974 to current year. Index page iv 12 Series


AVEVA Solutions Limited and its subsidiaries.
All rights reserved.

Das könnte Ihnen auch gefallen