Você está na página 1de 332

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

September 2011 12.1.1

Comments / Remarks
Event Driven Graphics added.

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 Gadgets Position: <fgpos> and <fgprl> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:8
Setting Up the Gadgets Width and Height: <vshap>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:9
Setting Up the Gadgets Tagwidth (TEXT, TOGGLE and OPTION): <fgtagw> . . . . . . . . . 2:10
Setting Up the Gadgets 2D Screen Position: <xypos> . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:10

Object Type Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:11


ALERT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ARC Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ARRAY Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BANNER Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BAR Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BLOCK Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BOOLEAN Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2:11
2:12
2:20
2:24
2:25
2:27
2:27

12 Series

Software Customisation Reference Manual

BORE Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:28


BUTTON Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:29
COLLECTION Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:33
COLUMN Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:34
COLUMNFORMAT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:35
COMBOBOX Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:37
CONTAINER Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:41
DATEFORMAT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:42
DATETIME Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:43
DB Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:45
DBREF Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:47
DBSESS Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:48
DIRECTION Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:48
EXPRESSION Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:50
FILE Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:51
FMSYS Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:53
FORM Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:56
FORMAT Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:65
FRAME Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:68
Graphical Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:72
IDList
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:74
LINE Gadget. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:76
LINE Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:77
LINEARGRID Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:86
LIST Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:88
LOCATION Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:93
MACRO Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:95
MDB Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:95
MEASURE Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:97
MENU Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:99
Multi Discipline Route Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:106
NUMERICINPUT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:111
OBJECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:113
OPTION Gadget. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:113
ORIENTATION Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:117
PARAGRAPH Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:118
PLANE Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:120
PLANTGRID Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:124
PLATFORMGRID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:125
PMLReport Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:128

ii

12 Series

Software Customisation Reference Manual

PMLSECURELOGIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PMLUSERLOGIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
POINTVECTOR Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
POSITION Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
POSTEVENTS Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROJECT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROFILE Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RADIALGRID Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
REAL Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
REPORT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RTOGGLE Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Section Plane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Section Plane Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SELECTOR Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SESSION Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SLIDER Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
STRING Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
STATE
............................................................
TABLE Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TEAM Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TEXT Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TEXTPANE Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TOGGLE Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UNDOABLE Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UNIT Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
USER Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VERIFY
............................................................
ViewFinder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VIEW Gadget: ALPHA Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VIEW Gadget: AREA View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VIEW Gadget: PLOT View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VIEW Gadget: VOLUME Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XYPosition Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2:130
2:131
2:131
2:134
2:139
2:140
2:141
2:151
2:153
2:158
2:161
2:163
2:165
2:168
2:171
2:173
2:175
2:182
2:182
2:184
2:185
2:188
2:190
2:192
2:193
2:195
2:196
2:196
2:198
2:199
2:201
2:203
2:206

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


Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:1
Purpose

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:1

Scope

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:2

Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:2

iii

12 Series

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Picking
..............................................................
Pick Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Event Packet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Event Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3:4
3:4
3:5
3:5
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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Examples (Defining Pick Sequences) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Examples (Using Pick Packets) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Limitations and Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3:31
3:52
3:54
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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rule Combination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Published Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Limitations and Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3:59
3:60
3:61
3:61
3:63

Pick Data (edgPickData) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:63

iv

12 Series

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Numeric (Real) Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADD and SUBTRACT (+ and -) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MULTIPLY and DIVIDE (* and /) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Numeric (Real) Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Real Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

A:12
A:13
A:13
A:13
A:14
A:22

Using IDs in Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:22


Positions, Directions and Orientations in Expressions (PDMS only) . . . . . . . A:23
Using Positions in Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
WRT (PDMS Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FROM
.............................................................
Comparing Positions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
POLAR
.............................................................
Direction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Orientations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

A:23
A:23
A:25
A:27
A:28
A:29
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

12 Series

Software Customisation Reference Manual

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

vi

12 Series

Software Customisation Reference Manual


Introduction

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.

1:1

12 Series

Software Customisation Reference Manual


Introduction

1:2

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

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
ARC

3D Geometry Objects

LINE
LINEARGRID
LOCATION
PLANE
PLANTGRID
POINTVECTOR
POSTEVENTS
PROFILE
RADIAL GRID
XYPOSITION

2:1

12 Series

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
ALERT

Forms and Menu Objects &


Gadgets

BAR
BUTTON
COMBOBOX
CONTAINER
FMSYS
FORM
FRAME
LINE
LIST
MENU
NUMERIC
OPTION
PARAGRAPH
RTOGGLE
SELECTOR

2:2

12 Series

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
FORMAT

Formatting Text
Table 2: 1.

2.2

Object Types and Classification

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)

2:3

12 Series

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
STRING

Unset()

BOOLEAN

TRUE if the object does not


have a value

Name

Type

Purpose

visible

BOOLEAN

You query this member to


determine if a gadget is
visible or invisible.

Table 2: 2.

object

to

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.

Get/Set

To make a gadget visible, set


it to TRUE; to make the
gadget invisible, set it to
FALSE.
BOOLEAN

active

Get/Set

You query this member to


determine if a gadget is
active or inactive (greyedout).
To make a gadget active, set
it to TRUE; to make the
gadget inactive, set it to
FALSE.

2:4

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Type

Purpose

callback

STRING

Query or assign the gadgets


callback string

Get/Set
STRING

tag

Query or assign a gadgets


tag text. This is not displayed
for all gadgets.

Get/Set
Table 2: 3.

2.3.2

Members Contained by All Gadgets

Summary of Gadget-Specific Methods


The table below summarises the methods that different gadgets support.

X
X

X
X

X
X

View:Plot

Selector

Line

Frame

Combobox

Container

Numeric Input

View 3D

View 2D

View Alpha

Toggle /Rtoggle

Text-pane

Text

Slider

Para

Option
X

ClearSelection
Container

List

Background
Clear

Button

Bar

Add

X
X

CurPos
X

DisplayText
FieldProperty

FullName

GetPickedPopup

Highlight
InsertAfter

InsertBefore

X
X

Line
Name

Owner

Refresh

RemovePopup
RestoreView

RToggle
Select

Selection

SetActive
SetBackground
SetColumns

X
X

X
X

SetCurPos

2:5

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

View:Plot

Selector

Line

Frame

Combobox

X
X

SetFocus

SetHeadings

SetLine
X

SetPopup

SetRange
X

SetRows

SetSize
X

SetTooltip

X
X

SetValue
X

Subtype

Type

Shown

ShowPopup

ValidateCall
Table 2: 4.

Container

Numeric Input

View 3D

View 2D

View Alpha

Toggle /Rtoggle

Text-pane

SetFieldProperty

Text

Slider

Para

Option

List

Button

Bar

SetEditable

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

2:6

12 Series

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.

2.4.3

Syntax Graph -: Gadget Anchoring

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.

2:7

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.4.4

Setting-Up the Gadgets Position: <fgpos> and <fgprl>


You can use the AT syntax, shown below on the <fgpos> graph, to define the position of a
gadgets 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 forms 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.

2:8

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.4.5

AT XMIN.GAD1-2
YMAX.GAD2+1

Positions new gadget with respect to two existing


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


FORM-SIZE

XMAX FORM refers to the current right hand size of the


form at its current stage of definition (not its final
maximum extent). YMAX FORM refers to the forms
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.

Setting Up the Gadgets Width and Height: <vshap>


This operation allows you to set a gadgets 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 ------.


+- <gname> --|
-------------->

Setting the Width: <vhei>

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


+- <gname> --|
-------------->

2:9

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.4.6

Setting Up the Gadgets Tagwidth (TEXT, TOGGLE and OPTION):


<fgtagw>
The TAGWIDTH specifies the size of the gadgets 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 Gadgets 2D Screen Position: <xypos>


This shows how to set up a gadgets 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

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


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

2:10

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

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

Confirm( Message is STRING, X is


REAL, Y is REAL )

STRING
Show a blocking CONFIRM
YES
OR ALERT and retrieve the
NO
response. X and Y are
optional screen positions.

Error(Message is STRING, X is
REAL, Y is REAL )

STRING
YES

Show a blocking ERROR


ALERT and retrieve the
response. X and Y are
optional screen positions.

Message(Message is STRING, X is
REAL, Y is REAL)

STRING
YES

Show a blocking MESSAGE


ALERT and retrieve the
response and retrieve the
response. X and Y are
optional screen positions.

Question(Message is STRING, X is
REAL, Y is REAL )

STRING
YES, NO
OR
CANCEL

Show a blocking QUESTION


ALERT and retrieve the
response. X and Y are
optional screen positions.

Warning(Message is STRING, X is
REAL, Y is REAL)

STRING
YES

Show a blocking WARNING


ALERT and retrieve the
response and retrieve the
response. X and Y are
optional screen positions.

!!Alert.Input( ! prompt is
STRING, !default is STRING) is
STRING

STRING

Show a blocking INPUT


ALERT. !prompt is the
prompt displayed to the user,
and !default is the default
value in the text box.

!!Alert.Input( !prompt is
STRING, !default is STRING, xPos
is REAL, yPos is REAL) is STRING

STRING

Show a blocking INPUT


ALERT. !prompt is the
prompt displayed to the user,
and !default is the default
value in the text box. xPos
and
yPos
are
the
coordinates of the top lefthand corner of the alert box.

Table 2: 5.

Purpose

Alert Object Methods

2:11

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.2

ARC Object
Basic ARC Definition: Members

Name

Type

Purpose

Orientation

ORIENTATI
ON
Get/Set

Orientation of the arc.

Position

POSITION
Get/Set

Origin/Centre of the arc.

Radius

REAL
Get/Set

Radius of the arc

StartAngle

REAL
Get/Set

Angle from X axes to start of


the arc.

EndAngle

REAL
Get/Set

Angle from X axes to end of


the arc.

Sense

BOOLEAN
Get/Set

Arc sense:

Table 2: 6.

0 for clockwise
1 for anti-clockwise

Basic ARC Definition Members

Basic ARC Definition: Methods


These methods do not modify the original object.
Name

Result

Purpose

Arc( POSITION, ORIENTATION,


REAL, REAL, REAL,BOOLEAN)

ARC

Creates an arc with the given


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

2:12

12 Series

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.

ARC

Chord(REAL)

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

2:13

12 Series

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

AnglePosition(REAL)

POSITION Returns the position at the


specified angle on the arc.

Table 2: 9.

Purpose

ARC Methods that Return POSITIONs

AnglePosition(REAL)

Figure 2:9.

POSITIONs Returned by ARC Methods

2:14

12 Series

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

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
tangential
passed.

Table 2: 10.

Purpose

the
direction,
to the angle

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
ON

Returns the position, mapped


onto the arc plane, in term of
an XY offset from the arc plane
origin

Figure 2:11.

ARC Methods that Return XYOffsets

2:15

12 Series

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)

2:16

12 Series

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
ARRAY

Returns the intersection


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
ARRAY

Returns the intersection


points, in terms of angles
from the X axis, of the
passed plane with the circle
defined by the arc

2:17

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

Intersections(ARC)

REAL
ARRAY

Returns the intersection


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
ARRAY

Returns
the
points
of
tangency on the arc circle
from the passed position, in
terms of angles from the X
axis,

Tangents(ARC)

REAL
ARRAY

Returns
the
points
of
tangency on the arc circle for
the passed arc circle, in
terms of angles from the X
axis

2:18

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

Split()

REAL
ARRAY

Splits the arc into a non-zero


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

2:19

12 Series

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).

ARRAY

DeleteFrom( REAL index)

Make undefined elements


from index to end of array.
Returns an array of the
deleted elements.
Remaining elements not reindexed.

2:20

12 Series

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 reindexed.

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
ARRAY

Evaluate code in command


at each element.

Find(ANY value)

NEW
ARRAY

Search original array for


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
ARRAY

Returns an array containing


the indices of the target array
that have a value.

Insert(REAL index, ANY value)

NO RESULT Insert value as


element at index.
Later elements
indexed

2:21

a
are

new
re-

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

InsertArray(REAL index, ARRAY


ANY values)

NO RESULT Insert
values
as
new
elements with the first at
index.
Later elements
indexed

are

re-

Intersect(ARRAY two)

NEW
ARRAY

Return array of elements


present in both arrays.
Duplicates will appear only
once.

Invert()

NEW
ARRAY

Returns an inverted copy of


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
ARRAY

Replace array elements at


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 reorder 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 reindexed.

ANY

RemoveFirst()

Remove and Return first


element (which need not be
assigned if not required).
Remaining elements are reindexed.

RemoveFrom(REAL index, REAL n)

NEW
ARRAY

Remove and Return new


array of n elements starting
with index (which need not
be assigned if not required).
Remaining elements are reindexed.

2:22

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

RemoveFrom(REAL index)

NEW
ARRAY

Remove and Return new


array of elements from index
to end of array (which need
not be assigned if not
required).
Remaining elements are reindexed.

ANY

RemoveLast()

Remove and Return last


element (which need not be
assigned if not required).
Remaining elements are reindexed.

RemoveTo(REAL index, REAL n)

NEW
ARRAY

Remove and Return n


elements from start to index
(which need not be assigned
if not required).
Remaining elements are reindexed.

NEW
ARRAY

RemoveTo(REAL index)

Remove and return elements


from start to index (which
need not be assigned if not
required).
Remaining elements are reindexed.

Size()

REAL

Returns the number


defined elements.

of

Sort()

NO RESULT Sort array into ascending


order.

SortUnique()

NEW
ARRAY

SortedIndices()

NEW REAL Return new array of indices


ARRAY
representing the sorted order
of elements in array.

Returns a sorted copy of the


array
with
duplicates
removed.

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
ARRAY

Return array of elements


present in either array
(duplicates will appear only
once).

2:23

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Unique()

NO RESULT Discard duplicates and reindex remaining elements.

Width()

REAL

Return the maximum width of


string
elements
(other
element types are ignored).

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: 16.

2.5.4

Purpose

ARRAY Object Methods

BANNER Object
Members

Table 2: 17.

BANNER Object Members

Command

!BANNVAR = BANNER!

$ Returns a BANNER object

2:24

12 Series

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.
NO RESULT Removes all barmenu fields.
Using this method is
deprecated.

Clear()

Clear(STRING

NO RESULT Removes all barmenu fields


after and including the one
with DTEXT dText.

dText)

Using this
deprecated.
BOOLEAN

FieldProperty(STRING field,
STRING property)

method

is

Get the value of the 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


dText, STRING menu)

NO RESULT Inserts a new barmenu field


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.
NO RESULT Inserts a new barmenu field
immediately before the one
identified by field.

InsertBefore(STRING field,
STRING dText, STRING menu)

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.

2:25

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

SetActive( STRING dText, BOOLEAN


state)

NO RESULT Deactivate/Activate
the
menu field whose DTEXT is
dText.
Using this
deprecated.

SetFieldProperty(STRING menu,
STRING property, BOOLEAN state)

method

is

NO RESULT Set the value of the property


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.

2:26

12 Series

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.

2.5.7

BLOCK Object Methods

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


format)

BOOLEAN

As
above.
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

2:27

12 Series

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.

2.5.8

BOOLEAN Object Methods

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


format)

BOOLEAN

Constructor that creates a


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

2:28

12 Series

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.

Name

Type

Purpose

Background

REAL
Set/Get

Set or get Background


Colour Number

Background

STRING
Set Only

Set
Background
Name

Val

BOOLEAN

TRUE when the button is


pressed
FALSE when it is not

Figure 2:18. BORE Object Methods

2.5.9

BUTTON Gadget
Members

Table 2: 22.

Colour

BUTTON Object Members

2:29

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Methods

Name

Result

Purpose

AddPixmap(STRING file1, STRING


file2, STRING file3 )
AddPixmap(STRING file1, STRING
file2)
AddPixmap(STRING file )

NO RESULT Adds pixmaps to be used for


the unselected, selected and
inactive states. The last two
are optional.

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
Name.

Colour

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

Table 2: 23.

Get the gadget-type as a


STRING.

BUTTON Object Methods

2:30

12 Series

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.

2:31

12 Series

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 gadgets 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 )

2:32

12 Series

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 deactivated. 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


applied to the collection.

Type (STRING)

Empties the current scope


type list and adds the passed
element type.

2:33

be

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

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
ON

Returns the expression used


to filter database elements.

Scope()

DBREF
ARRAY

Returns the list of database


elements to scan.

Types()

STRING
ARRAY

Returns the list of database


element
types
to
be
collected.

Results()

DBREF
ARRAY

Returns the whole collection.

Next(REAL n)

DBREF
ARRAY

Returns sub array from


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.

2.5.11

Result

COLLECTION Object Methods

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.

2:34

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Methods

Name

Purpose

Column()

Constructor (initialises all the


object settings)

Column(EXPRESSION, BOOLEAN,
BOOLEAN, STRING)

Constructor
setting
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
ascending order

sort

to

Descending()

Sets
column
sort
descending order

to

Key()

STRING

Returns the key word for use


when reporting

Expression()

EXPRESSI
ON

Returns the expression used


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.

2.5.12

Result

COLUMN Object Methods

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.

2:35

12 Series

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
justification

LeftIndent()

REAL

Returns the left indent setting

RightIndent()

REAL

Returns
setting

Table 2: 26.

the

right

column

indent

COLUMNFORMAT Object Methods

2:36

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.13

COMBOBOX Gadget
Members

Name

Type

Val

REAL
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


STRING
replacement texts.
Get/Set

RText[n]

STRING Get Get the replacement text of


Only
the n'th option.

Editable

BOOLEAN
Get/Set

Controls editable status of


the
text
display
field
(ComboBox only)

Scroll

INTEGER
Get/Set

Controls the maximum length


of a text string which can be
held and scrolled in the
display text field (ComboBox
only)

Count

REAL
Get only

Get count of number of fields


in the list.

Val

REAL
Get/Set

Selected field as integer.


Zero implies no selection.
Setting val to zero will cause
an error if ZeroSel is not
specified.

Table 2: 27.

Purpose
Get/ Selected option number.

list

of

COMBOBOX Gadget Members

2:37

12 Series

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 isnt specified, it
will be set to Dtext by
default.

Clear()

NO RESULT Clear gadgets 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
RTEXT.

Selection(STRING text )

STRING

Get RTEXT or DTEXT of


current selection; text must
be Rtext or Dtext.

selections

SetDisplayText( STRING text ) NO RESULT Set the display text field


value, if
editable.

the

gadget

is

SetPopup(MENU menu)

NO RESULT Links menu with the gadget


as a popup.

Refresh()

NOT
RESULT

SetFocus()

NO RESULT Move keyboard focus to this


gadget.

RemovePopup(MENU menu)

NO RESULT Removes (popup)


from the gadget.

2:38

Refreshes the display of the


gadget.

menu

12 Series

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
Name.

Colour

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

SetPopup(

NO RESULT Assigns a menu object as the


gadget's current popup.

!menu )

Gets the text string currently


displayed in the Option
gadget's display field.

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-

2:39

12 Series

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.

2:40

12 Series

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
REAL, !y is REAL )

NO RESULT

Show the associated popup at the specified


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

2:41

12 Series

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)
$ 12:10 05/01/01

!format.year(2)
!format = object DATEFORMAT(T D M Y)

$ 12:10 05 Nov 01

!format .month(BRIEF)
!format = object DATEFORMAT (D M)
!format.year(4)

$ 5 November 2001

!format.month(FULL)

2:42

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Methods

Name

Result

Purpose
Constructor. Defines a format.

DateFormat(STRING 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.

2.5.16

DATEFORMAT Object Methods

DATETIME Object
Methods

Name

Result

Purpose

DateTime()

DATETIME

Create a DATETIME object


with current date and time in
it.

DateTime(REAL year, REAL month,


REAL date)

DATETIME

Create a DATETIME set to


the given year, month, date.
Time defaults to 00:00:00.

DateTime(REAL year,
STRING month.
REAL date)

DATETIME

As above, but month is a


STRING at least three
characters long representing
month e.g. Jan, March,
DECEM

2:43

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

DateTime(REAL year, REAL month,


REAL date,
REAL hour,REAL minute)

DATETIME

Create a DATETIME object


set to given year, month,
date, hour, minute. Seconds
default to 0.

DateTime(REAL year,
STRING month, REAL date, REAL
hour, REAL minute)

DATETIME

As above, but month is a


STRING at least three
characters long representing
month e.g. Jan, March,
DECEM

DateTime(REAL year, REAL month,


REAL date, REAL hour, REAL
minute, REAL second)

DATETIME

Create a DATETIME object


set to given year, month,
date, hour, minute, second.

DateTime(REAL year, STRING


month, REAL date, REAL hour,
REAL minute,
REAL second)

DATETIME

As above, but month is a


STRING at least three
characters long representing
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 (059).

Month()

REAL

Return month as REAL for


this DATETIME object (112).

MonthString()

STRING

Return month as STRING


for this DATETIME object
(January, February, etc.)

2:44

12 Series

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)

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: 30.

2.5.17

DATETIME Object Methods

DB Object
Members

Table 2: 31.

DB Object Members

2:45

12 Series

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

2:46

12 Series

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

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.

TRUE if DBREF is not valid


(cannot navigate to it)

DB Object Methods

2:47

12 Series

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

Name

Type

Purpose

East

REAL
Get/Set

UP component

North

REAL
Get/Set

NORTH component

Up

REAL
Get/Set

UP component

Origin

DBREF
Get/Set

DB element that is the origin

Table 2: 34.

2.5.20

DBSESS Object Members

DIRECTION Object
Members

Table 2: 35.

DIRECTION Object Members

Methods
None of these methods modifies the original object.

Name

Result

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

2:48

Purpose

TRUE if two directions are


the same

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

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

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
direction

Orthogonal(DIRECTION)

DIRECTION Returns
the
direction
orthogonal between the two
directions

Projected(PLANE)

DIRECTION Returns a direction projected


onto the passed plane.

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.

Returns the angle between


the two directions

the

opposite

DIRECTION Object Methods

2:49

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and 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


objects 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

2:50

12 Series

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.

2:51

12 Series

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

Path()

ARRAY OF Returns an ARRAY of FILEs


FILES
corresponding to the owning
directories of this FILE
object.

PathName()

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.

2:52

Returns the ID of this FILES


owner a STRING.

Returns owning path as a


STRING.

12 Series

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
STRING)

NO RESULT Opens file in mode given in


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.

2.5.23

FILE Object Methods

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.

2:53

12 Series

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 files


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 doesnt 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.

2:54

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

OKCurfnView(!viewtype is STRING,
subtype is STRING )

BOOLEAN

Queries whether graphical


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
FORMAT)

NO RESULT Provide a default global


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
string)

NONE

establishes the application


help file from its alias.

SetInterrupt(GADGET)

NO RESULT Sets the Gadget which will


interrupt macro or function
processing.

SetMain(FORM)

FORM

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.

Sets the main form for an


Application.

FMSYS Object Methods

2:55

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.24

FORM Object
Members

Name

Type

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
Get/Set

Gadget
to
have
initial
keyboard focus on display of
the form. One of TEXTFIELD,
TEXTPANE,
BUTTON,
TOGGLE or ALPHA VIEW.

AutoScroll

BOOLEAN
Get/Set

If AutoScroll is selected the


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.

2:56

Purpose

12 Series

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

Get/set forms maximised


status (on screen).

Active

BOOLEAN
Get Only

Gives form's active/inactive


status.

Popup

MENU
Get/Set

Get/set forms current popup


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.

2:57

12 Series

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
assigned callback method to
destroy
any
associated
resources, e.g. global PML
objects
which
would
otherwise not be destroyed
(see Killing callback).

Get/Set

STRING

FirstShowncall

Get/Set

Table 2: 40.

Allow the user to carry out


any form actions which can
only be completed when the
form is actually displayed for
the first time (see FirstShown
callback).

FORM Object Members

Methods

Name

Result

Purpose

Name()

STRING

Get name.

FullName()

STRING

Get the full


(Including !!).

NewMenu(STRING menuname)

MENU

Adds a new named menu to


the form.

NewMenu(STRING menuname, STRING


type)

MENU

Adds a new named and


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) greysout all gadgets on the form,


but doesnt 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.

2:58

form

name

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

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 righthand mouse button is
released over the form
background.

RemovePopup(MENU)

NO RESULT Removes a pop-up


associated with a form.

GetPickedPopup()

MENU

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

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'

2:59

Purpose

Returns the last picked


popup menu for the form.

Get 'shown' status

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

SetUndoable( )

STRING,
ANY

Undoable( )

STRING

Table 2: 41.

Purpose

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 forms 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.
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.

2:60

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

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

Default:

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

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.

2:61

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

>-- CURSortype

--+-+-+-+--

POINTER ----.
NOCURSOR ---|
PICK -------|
PICKPLUS ---|

-- CROSSHAIR ---->
Note: There are other cursor types that are for AVEVAs use only.
HALIGN
Works in conjunction with PATH and HDISTANCE. Defines how a newly added gadget
should be aligned horizontally with the preceding gadget.

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


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


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


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.

2:62

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

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

Default:

Path Right.

TITLE
Defines the form title.

>-- TITLe text -->


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

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


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

2:63

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

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
!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:64

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

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.
Members

Name

Type

Purpose

CompSeparator

STRING | |

Separator
used
for
multicomponent data types such as
POSITIONS (Default SPACE).

Denominator

REAL 32

Largest denominator for Imperial


fractions
(Default 32)

Dimension

STRING
NONE

Number
(Default)

Number is a LENGTH

L2

Number is an AREA

L3

Number is a VOLUME

is

un-dimensioned

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
TRUE
FALSE

Use ENU format when outputting


POSITIONS (Default)

2:65

Use XYZ format when outputting


POSITIONS

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Type

Purpose

Fraction

BOOLEAN
FALSE
TRUE

Fractional part output as decimal


(Default)

STRING ||

Label used for feet


e.g. ' or FT or ft or feet

FtLabel

Fractional part output as fraction

(Default )
InchSeparator

STRING |.|

Separator between inches and


fractions
(Default . )

Label

STRING
|mm|

General distance label


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
FALSE
TRUE

2:66

Do not pad Fractions (Default)


Pad Fractions with trailing spaces

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Type

Purpose

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

Units

STRING
MM

Output number
(Default)

in

millimetres

Output number in metres.

FINCH
INCH

Output number in feet and inches


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

Zeros

BLOCK
||
|/*|
|CE|

With respect to World (Default)

BOOLEAN

Leading zeroes are displayed for


Imperial units (Default).

TRUE
FALSE
Table 2: 42.

With respect to World


With respect to Current Element

Leading zeroes are not displayed


for Imperial units

FORMAT Object Members

2:67

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.26

FRAME Gadget
Members

Name

Type

Purpose

Tag

STRING
Get/Set

Text to appear as title on the


frame.

Val

REAL
Set

Get/ Selected radio button index


as integer.

RGroupCount

REAL
only

Get Count of radio buttons


(RTOGGLES) within the
FRAMEs
radio
group.
Returns zero if the FRAME is
not a radio group.

Callback

STRING
Get/Set

Radio group select callback


string.

Expanded

BOOLEAN
Get/Set

FoldUpPanels
status

Name

Result

Purpose

Rtoggle( !index is REAL )

GADGET

Returns
the
RTOGGLE
gadget with index !index.

Background()

STRING

Get
Background
Name.

Table 2: 43.

expanded

FRAME Gadget Members

Methods

Colour

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.

2:68

12 Series

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
frames scope. You can define a toolbar frame only for a main form, and a main form can
contain only toolbar frames.

2:69

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

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


>-- toolbar -+-+-+-+-+-+-+--

<fbutn> ----.
<ftext> ----|
<ftogl> ----|
<foptio> ---|
<fvar> -----|
<pml> ------|
<nxasgn> ---|

-- <varset> ------->

Button gadget
text gadget
toggle gadget
option gadget
form variable definition
general PML
PML expressions
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> ---.
<fvar> -----|
<pml> ------|
<nxasgn> ---|

-- <varset> ------->

frame gadget
form variable definition
general PML
PML expressions
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.

2:70

12 Series

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 folddown 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 foldup 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.

2:71

12 Series

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


selection, i.e. defines
element that the
elements must exist
Default is WORLD.

.add(DBREF)

DBREF

Adds the highest significant


parent of passed element to
selection

2:72

of the
the top
selected
beneath.

12 Series

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

2:73

12 Series

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
DBREFs

of Returns list of permissible


ancestors for given element,
within the current scope

.getSelection()

ARRAY
DBREFs

of Returns all elements in the


selection

Table 2: 45.

2.5.28

Graphical Selection Object Methods

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.

2:74

12 Series

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

2:75

12 Series

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

2:76

12 Series

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
Get/Set

Start position of line.

EndPosition

POSITION
Get/Set

End position of line.

Table 2: 47.

LINE Object Members

Definition Methods
None of these methods modifies the original object.
Name

Result

Purpose

Line( POSITION first, POSITION


second)

LINE

Creates a LINE between the


given positions, first and
second.

String()

STRING

Returns the
STRING.

Direction()

DIRECTION Returns
a
DIRECTION
representing the direction of
the line.

Direction(DIRECTION way)

LINE

Table 2: 48.

line

as

Creates a new line with the


same start position and
length but in the direction
given by way.

LINE Object Definition Methods

2:77

12 Series

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


bounded)

BOOLEAN

Returns TRUE if where lies


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

2:78

12 Series

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,
VECTOR vector)

POSITION

Returns the intersection point


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

2:79

12 Series

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
TOR

Returns a POINTVECTOR
object,
using
the
StartPosition and Direction
of line object

Figure 2:26. LINE Object Miscellaneous Methods

2:80

12 Series

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)

2:81

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

ExtendEnd(REAL)
To(POSITION)

SetLengthStart(REAL)
ExtendStart(REAL)

Towards(POSITION)

SetLengthEnd(REAL)

From(POSITION)

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


offset)

LINE

Returns a parallel line to the


LINE object, offset by offset
from the original in the given
direction. See picture.

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

2:82

12 Series

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)

2:83

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

LINEARGRID Object Construction Aids


Members

Name

Type

Purpose

Position

POSITION
Get/Set

Origin of the grid

Orientation

ORIENTATI
ON Get/Set

Orientation of the grid

XSpacing

REAL
Get/Set

Spacing in the X direction

YSpacing

REAL
Get/Set

Spacing in the Y direction

Table 2: 52.

LINEARGRID Object Members

Definition Methods
These methods do not modify the original object.
Name

Result

Purpose

Lineargrid( POSITION,
ORIENTATION, REAL, REAL)

LINEARGRI
D

Creates a grid with the given


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

X
XSpacing
Figure 2:31. LINEARGRID Basic Definition

2:84

12 Series

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

2:85

12 Series

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

2:86

12 Series

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)

XYPOSITIO
N

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

2:87

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.32

LIST Gadget
Members

Name

Type

Val

REAL
Set

Val

REAL
Selected field numbers of a
ARRAY Get/ multiple-choice list.
Set

DText

STRING
Set or get the entire list of
ARRAY Get/ display texts.
Set

DText[n]

STRING Get Get the display text of the


Only
n'th field.

PickedField

REAL
Only

RText

STRING
Set or get the
ARRAY Get/ replacement texts.
Set

RText[n]

STRING
Only

et Get the replacement text of


the n'th field.

Count

REAL
Get only

Get count of number of fields


in the list

val

REAL
Get/Set

Selected field as integer.


Zero implies no selection.
Setting val to zero will cause
an error for mandatory
selection lists.

Table 2: 57.

Purpose
Get/ Selected field-number of a
single-choice list.

Get Last picked list field number.


list

of

LIST Object Members

2:88

12 Series

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


value)

NO RESULT Select specified item in a list.


text must be Rtext or
Dtext. value is the RTEXT
or DTEXT of the item to be
selected.

Select(STRING text, ARRAY of


STRING values)

NO RESULT Select multiple choice list


items. text must be 'Rtext' or
'Dtext'. values contains the
RTEXT or DTEXT values to
be selected.

Selection( )

STRING
Get selected RTEXT
ARRAY OF
Array of RTEXT for multiSTRING
choice list.

Selection(STRING text)

STRING
Get selected RTEXT or
ARRAY OF DTEXT
STRING
Array of texts for multi-choice
list.
text must be 'Rtext' or 'Dtext'.

Clear()

NO RESULT Clear list


selections.

ClearSelection()

NO RESULT Clear list selections.

SetPopup(MENU

NO RESULT Links menu with the gadget


as a popup.

menu)

2:89

contents

and

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

RemovePopup(MENU menu)

NO RESULT Removes popup menu from


the gadget.

GetPickedPopup()

MENU

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 STRING)

NONE

Specifies the number of


columns and sets the list's
column headings. Dtexts
contains a set of TAB
separated sub-strings.

SetHeadings(!Dtexts is ARRAY)

NONE

Specifies the number of


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
STRING))

NO RESULT This sets the display text for


all 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.

2:90

Purpose

Returns the last picked


popup menu for the gadget.

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

SetColumns(Array of (Array of
STRING))

NO RESULT This sets the display text for


all 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


dtext)

NO RESULT This selects the first list row


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
Name.

Colour

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:

2:91

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

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

2:92

12 Series

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:

2.5.33

A single choice, mandatory selection list.

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

2:93

12 Series

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 Array of DB objects for


DB
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

Table 2: 60.

STRING containing Location


name. This method does not
modify the original object.

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 elements name.
These methods should assist performance improvements to AppWare by making it easier to
get from Database element to Object.

2:94

12 Series

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
connection macro.

Number

REAL

Inter-DB macro number.

To

DB

Target DB of
connection macro.

Table 2: 61.

inter-DB

inter-DB

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

2:95

12 Series

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
given a DBREF.

MDB(STRING)

MDB

Returns an MDB object,


given a name or reference
number.

Current()

ARRAY OF Current databases as


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.

object,

an

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

2:96

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.36

MEASURE Object
Members

Name

Type

Purpose

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

Name

Result

Purpose

Description()
String()

STRING

Long
description
dimension.

of

Name()

STRING

Unique name used


format
statements
commands

for
and

Hashcode()
Ptype()

STRING

Hash code of dimension.


Returns
'GENERIC'
if
generic dimension - i.e. non
standard.

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.

Constructors

Table 2: 63.

MEASURE Object Members

Methods

Current Unit Methods

2:97

12 Series

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.

BOOLEAN

Default()

Sets current units of all


dimensions to those defined
by catalogue BUNI/DUNI.
Returns true if successful.

BOOLEAN

Suspend()

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.

BOOLEAN

Unsuspend()

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).

2:98

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

DBUnits()
DBUnit()

UNIT

Database unit
dimension.

UnitsOf()

ARRAY
UNITs

AllDimensions()

ARRAY of Set
of
all
MEASUREs dimensions.

AllUnits()

ARRAY
UNITs

Enum()

REAL

for

this

of Set of standard units of this


dimension.
standard

of Set of all named Units


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
STRING

PickedField

Get Only

Returns the DTEXT of the


last picked menu field.
Using this member is now
deprecated.
Use
the
PickedFieldName property
instead.

STRING

PickedFieldName

Get Only
Table 2: 64.

Returns the field name of the


last-picked
TOGGLE
or
CALLBACK field.

MENU Object Members

2:99

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Methods

Name

Result

Purpose

Add('SEPARATOR', {STRING
fieldName})

NO RESULT Append a SEPARATOR field,


with an optional STRING
argument, fieldName, that if
present denotes the unique
field-name in the menu.

Add('CALLBACK', STRING Dtext,


STRING callback, {STRING
fieldName})

NO RESULT Append a CALLBACK field


with Dtext, which may
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


formName, {STRING fieldName})

NO RESULT Append a FORM display field


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


menuName, {STRING fieldName})

NO RESULT Append a MENU (pullright)


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.

2:100

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

Add('TOGGLE', STRING Dtext,


STRING callback, {STRING
fieldName})

NO RESULT Append a TOGGLE field with


Dtext, which may contain
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.
NO RESULT Removes all menu fields
from the menu.

Clear()

Using this
deprecated.
Clear(STRING

method

is

NO RESULT Removes
menu
fields
starting with the one that
matches Dtext onwards.

Dtext)

Using this
deprecated
FieldProperty(STRING menuField,
STRING property)

BOOLEAN

method

is

Get the value of the 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,
CALLBACK, STRING Dtext, STRING
callback, {STRING fieldName})

NO RESULT Insert a CALLBACK field with


Dtext, which may contain
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.

2:101

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

InsertAfter(STRING menuField,
FORM, STRING Dtext, STRING
formName, {STRING fieldName})

NO RESULT Insert a FORM display field


with Dtext, which may
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,
MENU, STRING Dtext, STRING
menuName, {STRING fieldName})

NO RESULT Insert a MENU (pullright)


field with Dtext, which may
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,
TOGGLE, STRING Dtext, STRING
menuName, {STRING fieldName})

NO RESULT Append TOGGLE field with


Dtext, which may contain
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.

2:102

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

InsertAfter(STRING menuField,
SEPARATOR, {STRING fieldName})

NO RESULT Append a SEPARATOR field


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,
CALLBACK, STRING Dtext, STRING
callback, {STRING fieldName})

NO RESULT Insert a CALLBACK field with


Dtext, which may contain
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,
FORM, STRING Dtext, STRING
formName, {STRING fieldName})

NO RESULT Insert a FORM display field


with Dtext, which may
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,
MENU, STRING Dtext, STRING
menuName, {STRING fieldName})

NO RESULT Insert a MENU (pullright)


field with Dtext, which may
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.

2:103

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

InsertBefore(STRING menuField,
TOGGLE, STRING Dtext, STRING
menuName, {STRING fieldName})

NO RESULT Append TOGGLE field with


Dtext, which may contain
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,
SEPARATOR, {STRING fieldName})

NO RESULT Append a SEPARATOR field


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


status)

NO RESULT Set the selected status of


TOGGLE field identified by
Dtext to the value of status.
Using this
deprecated.
BOOLEAN

Selected( STRING Dtext )

is

Get selected status of the


TOGGLE field identified by
Dtext.
Using this
deprecated.

2:104

method

method

is

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

SetActive(STRING Dtext, BOOLEAN


active)

NO RESULT Set the active status of the


menu field identified by
Dtext.
Using this
deprecated.

SetFieldProperty(STRING
menuField , STRING property,
BOOLEAN value)

method

is

NO RESULT Set the value of property


with value, for the menu field
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 menus 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.

2:105

12 Series

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 fieldname, 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 menus 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

OwningDbBranch

DBREF

Returns
owner
branch element of
this route point.

OwningRoute

mdrRoute

Returns
mdrRoute

IsEqual

bool

mdrRoutePoint

2:106

Description

Remarks

owning Redundant? - could be


constructed easily from
OwningDbBranch

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

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

ExpandToRoute

mdrRoute

Expands external
geometry
to
mdrRoute object.

IsExternalGeometry bool

EndingRoutePoint

EndingRoutePoint

Returns true if its


an
external
geometry object.
mdrRoutePoint

mdrRoute
Point

StartingRoutePoint

Sets end external Valid only if this is a


geometry ending external geometry type
route point.
route point
Gets end external Valid only if this is a
geometry ending external geometry type
route point.
route point

mdrRoutePoint

Sets end external Valid only if this is a


geometry starting external geometry type
route point.
route point

StartingRoutePoint

mdrRoute
Point

Gets end external Valid only if this is a


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

Radius

Position

Real

Radius

Clone

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
Get the fillet radius
of route point

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

mdrRoute
Point

Returns
object

2:107

cloned Clones all the attributes


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

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

String

Is That

Type

Gets the name of


named route point
String type

String

Type

Returns true if the Compares if the type is


named
types the same with passed as
match
argument.
Gets the type of
route point object

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
element.

Enable

bool enabled

Enables
disables
point.

DB
or enable true if we want to
route enable
route
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
hierarchy.

clone

mdrRoute

Returns
object

DbElement

DBREF

Gets the underlying


DB element.

DB Returns true if write


was successful
cloned Clones all the attributes
taken from object which
from this method is
invoked
(besides
underlying DB element,
and name)

DbElement

DBREF

Sets the underlying Method


element.
ownership

Construct

DBREF

Constructs
route
point from DB

2:108

changes

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Equals

Bool

Checks for equality


of elements

HeadRoutePoint

mdrRoute
Point

Gets head
point

TailRoutePoint

mdrRoute
Point

Gets tail route point

route

HeadRoutePoint

mdrRoutePoint

Sets head
point

TailRoutePoint

mdrRoutePoint

Sets tail route point

InsertRoutePointAt
Head

mdrRoutePoint

Inserts route point


at head

InsertRoutePointAtT
ail

mdrRoutePoint

Inserts route point


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,
mdrRoutePoint

Inserts route
route point

ExpandToRoute

route

at

Expands all the ext


geom. into route

ExpandRoutePoint

mdrRoute

mdrRoutePoint

In place expand of
ext geom.

size

real

at

mdrRoute
Point

real

Route Point at

SubRoute

mdrRoute

mdrRoutePoint,
mdrRoutePoint

Cuts the route


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

number of route
points in route

2:109

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Transform

Orientation

Length

Real

Length

Real

Length From

Real

Transforms route
Calculates
length

mdrRoutePoint,
mdrRoutePoint

route

Length
between
two route points
Length from route
point

mdrBaseManager

Name

Returns

Arguments

Description

CreateRoutePoint

mdrRoute
Point

Position

Route point from


pos

CreateRoutePoint

mdrRoute
Point

DBREF

Route Point from


dbref

CreateRoutePoint

DBREF

Route from dbref

FindRoute

Array
of mdrConnection
mdrConec Graph,
tionPoint
mdrRoutePoint,
mdrRoutePoint

For
given
connection graph,
and
two
RoutePoints, find
the
best
path
between
these
route points

BeginInteractiveRo
utePointsEditing

mdrRoute

Enter Route point


model editor for
given route

BeginInteractiveQui
ckRouting

mdrRoute

Enter
Quick
Routing
model
editor for given
route

Description

Remarks

mdrConnectionManager

Name

Returns

Arguments

CreateRouteFrom
ConnectionPoints

mdrRoute

Array
of For given path
mdrConnection described
by
Points
connection points
array create route

CreateConnection mdrConnect DBREF


GraphFromOwner ionGraph
CreateConnection mdrRoute
GraphFromBranc
hes

Array
DBREF

2:110

Remarks

For given owner,


create connection
graph
of For given array of
dbrefs, create a
connection graph

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

CreateConnection
ByGeometryFrom
branches

Array
DBREF

CreateConnection
sByGeometryFro
mOwner

DBRF

GetConnectedAtt
asToAtta

ARRAY
DBREF

of Connect list of
branches base on
their positions
Connect
owning
branches element
based on their pos

of DBREF

Connected
from atta

attas

mdrConnectionGraph

Name

Returns

Arguments

Description

GetConnectionPoint mdrConnect mdrRoutePoint


ionPoint

For given route


point
return
connection point

GetAllConnectionPo Array
of
ints
mdrConnect
ionPoints

Get
connection
point list

Remarks

mdrConnectionPoint

2.5.39

Name

Returns

getRoutePoint

mdrRoute
Point

Arguments

Description

Remarks

Get route point

getConnectedRoute mdrRoute
Point
Point

Get
connected
route point

getFirstConnection
Type

Real

0- head, 1- tail, 2mid, 3- free, 4none

getSecondConnecti
onType

Real

0- head, 1- tail, 2mid, 3- free, 4none

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.

2:111

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Member

Type

Purpose

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

setRange( !range, !ndp ) NO RESULT

Table 2: 67.

Purpose
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.

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> ------------------|
+- 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.

2:112

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

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.

Name

Type

Purpose

DText

ARRAY OF
STRING
Get/Set

Set or get the entire list of


display texts.

DText[n]

STRING
Get Only

Get the display text of the


n'th option.

RText

ARRAY OF
STRING
Get/Set

Set or get the


replacement texts.

RText[n]

STRING
Get Only

Get the replacement text of


the n'th option.

Table 2: 68.

2.5.41

PML Object Methods

OPTION Gadget
Members

2:113

list

of

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Type

Purpose

Count

REAL
Get only

Get count of number of fields


in the list.

Val

REAL
Get/Set

Selected field as integer.


Zero implies no selection.
Setting val to zero will cause
an error if ZeroSel is not
specified.

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 isnt specified, it
will be set to Dtext by
default.

Clear()

NO RESULT Clear gadgets 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
RTEXT.

Selection(STRING text )

STRING

Get RTEXT or DTEXT of


current selection; text must
be Rtext or Dtext.

Table 2: 69.

OPTION Gadget Members

Methods

2:114

selections

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

SetPopup(MENU menu)

NO RESULT Links menu with the gadget


as a popup.

Refresh()

NOT
RESULT

SetFocus()

NO RESULT Move keyboard focus to this


gadget.

RemovePopup(MENU menu)

NO RESULT Removes (popup)


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
Name.

Refreshes the display of the


gadget.

menu

Colour

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

SetPopup(

NO RESULT Assigns a menu object as the


gadget's current popup.

!menu )

Gets the text string currently


displayed in the Option
gadget's display field.

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.

2:115

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

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.
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:116

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.42

ORIENTATION Object
Members

Name

Type

Purpose

Alpha

REAL
Get/Set

The Alpha component.

Beta

REAL
Get/Set

The Beta component.

Gamma

REAL
Get/Set

The Gamma component.

Origin

DBREF
Get/Set

The DB element which is the


origin.

Table 2: 71.

ORIENTATION Object Members

Methods
None of these methods modifies the original object.
Name

Result

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 component as a
DIRECTION.

YDir()

DIRECTION

Return Y component as a
DIRECTION.

ZDir()

DIRECTION

Return Z component as a
DIRECTION

Table 2: 72.

Purpose

ORIENTATION Object Methods

2:117

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.43

PARAGRAPH Gadget
Members

Name

Type

Purpose

Val

STRING
Get/Set

The
paragraph's
content as a string.

textual

If it has a pixmap then the


value will be the pathname of
the pixmap file as a string.
Background

REAL
Get/Set

Set or get Background


Colour Number.

Background

STRING
Get/Set

Set
Background
Name.

Name

Result

Purpose

AddPixmap(STRING)
AddPixmap(STRING, STRING)
AddPixmap(STRING, STRING,
STRING)

NO RESULT Adds pixmaps to be used for


the unselected, selected and
inactive states.

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.

Table 2: 73.

Colour

PARAGPRAPH Object Members

Methods

2:118

12 Series

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
Name.

Colour

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.

2:119

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.44

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.

PLANE Object
Members

Name

Type

Purpose

Orientation

ORIENTATI
ON Get/Set

Orientation of plane.

Position

POSITION
Get/Set

Origin of plane.

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

2:120

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Towards(POSITION)

Orientation
Direction(DIRECTION)
Z
Y

Position

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
VECTOR)

POSITION

Returns the intersection point


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()

POINTVECTOR

Returns a point vector at the


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

2:121

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Intersection(PLANE, PLANE)

Intersection(LINE)

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

2:122

12 Series

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
N

Returns
the
position,
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

2:123

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.45

PLANTGRID Object
Members

Name

Type

Purpose

Position

POSITION
Get/Set

Origin of the grid.

Orientation

ORIENTATION Orientation of the grid.


Get/Set

XSpacings

REAL ARRAY
Get/Set

Array of spaces in the X


direction, each space is
relative to the previous.

YSpacings

REAL ARRAY
Get/Set

Array of spaces in the Y


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,
ORIENTATION, ARRAY, ARRAY )

PLANTGRID

Creates a grid with the given


POSITION
and
ORIENTATION, and the X
and Y spacings specified in
the arrays.

Xsize()

REAL

Maximum
direction.

size

in

the

Ysize()

REAL

Maximum
direction.

size

in

the

OutofBounds(POSITION)

BOOLEAN

Returns whether point lies


within the grid boundaries.

Table 2: 80.

PLANTGRID Object Methods

2:124

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Orientation
Position

Ysize()

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

2:125

used

grid

12 Series

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

platform's

platformgrid

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
boundaries profiles

2:126

inner

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

INNERBOUNDARIES(ARRAY)

NO RESULT

Replaces
boundaries

the

inner

INNERBOUNDARY(REAL)

PROFILE

Returns the profile of the


inner boundary

NUMBEROFINNERBOUNDARIES()

REAL

Returns the number


grid's inner boundaries

OUTERBOUNDARY()

PROFILE

Returns the outer boundary


profile

of

Methods that return information about grids cells


Each cell is identified by index of two REAL.
Name

Result

Purpose

CELLORIENTATION(REAL1,
REAL2)

ORIENTATION

Returns an orientation of
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,
REAL2)

POSITION

Returns position of the cell


identified by given index

ISCELLTRIMMED(REAL1,
REAL2)

BOOL

Returns true
trimmed

if

cell

is

ISCELLUNTRIMMED(REAL1,
REAL2)

BOOL

Returns true
untrimmed

if

cell

is

ISCELLWITHIN(REAL1, REAL2)

BOOL

Returns true if cell is within


grid

LISTOFTRIMMEDCELLS()

ARRAY

Returns indices
trimmed cells

LISTOFTRIMMEDCELLS(REAL)

ARRAY

Returns indices of all


trimmed cells which area is
greater than given REAL
value

LISTOFUNTRIMMEDCELLS()

ARRAY

Returns indices
untrimmed cells

2:127

of

of

all

all

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

TOTALNUMBEROFCELLS()

REAL

Returns a number of cells


inside grid

TRIMMEDCELLSIZE(REAL1,
REAL2)

ARRAY

Returns
the
size
of
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.

2.5.47

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

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)

2:128

12 Series

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
argNames, ARRAY
argValues)

No Result

Adds parameters to report as 2


arrays of argument names and
values, which will be used to
generate a parameterised report.

AddScope(STRING
ancestorElements, STRING
elements)

No Result

Specify scope value to filter the data


given by comma separated list of
ancestor elements and comma
separated list of elements.

AddScope(STRING
ancestorElements, STRING
elements,
BOOLEAN fully,
REAL minX,
REAL minY,
REAL minZ,
REAL maxX,
REAL maxY,
REAL maxZ)

No result

Specify scope value to filter the data


given by comma separated list of
ancestor
elements,
comma
separated list of elements, if limit
box is specified then whether it
should be considered fully or
partially, to construct limit box minX,
minY, minZ, maxX, maxY, maxZ.

ExportAsCsv(STRING
reportFileName, STRING
destinationFilename)

No Result

Export report to csv file

ExportAsPdf(STRING
reportFileName, STRING
destinationFilename)

No Result

Export report to pdf file

ExportAsXlsx(STRING
reportFileName, STRING
destinationFilename)

No Result

Export report to Xlsx file

ExportAsXls(STRING
reportFileName, STRING
destinationFilename)

No Result

Export report to Xls file

InitializePrinterSetting No Result
()

Initialise the printer settings

OpenReportManager

No result

Opens report manager

Print(STRING
reportFileName)

No result

Print report with system defined


printer settings passing name of
report definition file

2:129

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

No Result

Print report with user defined printer


settings

PublishToAVEVANET(STRING No Result
reportFileName, STRING
pdfFilename)

Publishes report to AVEVA NET in


form of pdf file

RemoveParameters()

No Result

Removes the parameters applied to


report

RemoveScope()

No Result

Removes the scope applied to


report

PrintDirect(STRING
reportFileName)

2.5.48

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

Result

Purpose

PMLSecureLogin( )

PMLSECUR
ELOGIN

Construct an instance of this object

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

2:130

12 Series

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
GIN

Construct an instance of this


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
LEAN)

NO RESULT

If TRUE is passed, verify that no


user interaction occurs after
execution of the generated macro

Table 2: 82.

2.5.50

PMLUSERLOGIN Object Methods

POINTVECTOR Object
Members

Name

Type

Direction

DIRECTION Direction of point


Get/Set

Position

POSITION
Get/Set

Table 2: 83.

Purpose

Origin of point

POINTVECTOR Object Members

Definition Methods

Name

Result

Purpose

Pointvector( POSITION,
DIRECTION)

POINTVECTOR

Creates a POINTVECTOR
with the given POSITION
and DIRECTION

String()

STRING

Returns a POINTVECTOR
as a string.

Figure 2:47. POINTVECTOR Object Methods

2:131

12 Series

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

2:132

12 Series

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

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.

Purpose

POINTVECTOR Object Miscellaneous Methods

2:133

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.51

POSITION Object
Members

Name

Type

Purpose

East

REAL
Get/Set

The East component

North

REAL
Get/Set

The North component

Up

REAL
Get/Set

The Up component

Origin

DBREF
Get/Set

The DB element that is the origin

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

2:134

to

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

ArcCentre(POSITION, POSITION,
POSITION, DIRECTION, REAL )

ARC

Returns an arc using arc


centre
technique.
The
direction is the normal
viewing direction.

ArcCentre(POSITION, POSITION,
POSITION, DIRECTION, REAL)

ARC

Returns an arc using arc


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)

2:135

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

ArcFillet( POSITION, POSITION,


DIRECTION, REAL )

ARC

Returns an arc using arc


centre
technique.
The
direction is the normal
viewing direction. Please see
diagram for full explanation.

ArcRadius( POSITION, POSITION,


DIRECTION, REAL, BOOLEAN )

ARC

Returns an arc using arc


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,


DIRECTION )

ARC

Returns an arc using arc


through 3 points technique.
The direction is the normal
viewing direction. Please
see
diagram
for
full
explanation.

Table 2: 90.

POSITION Object Methods (c)

2:136

12 Series

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,


DIRECTION, REAL )

ARC

Returns an arc using arc


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)

2:137

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

Arc3Lines( LINE, LINE, LINE,


DIRECTION )

ARC

Returns a circle through the 3


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

2:138

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

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.

Table 2: 92.

2.5.52

POSITION Object Methods (e)

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

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.

Purpose

PML PostEvents Object Methods

2:139

12 Series

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

Name

Result

Purpose

Active()

REAL

Number of active users of the


project

Code()

STRING

Project
code,
characters, e.g. SAM

Description()

STRING

Project description, up to 120


characters.

Mbcharset()

STRING

Multibyte
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

Sessions()

ARRAY OF Return array of all Sessions


SESSIONS (at the current location)

CurrentSession()

SESSION

Dblist()

ARRAY OF List of
DB
project.
OBJECTS

Table 2: 94.

PROJECT Object Members

Methods

2:140

three

character

set

Return true current location

Return current Session (at


the current location)
databases

in the

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

MDBList()

ARRAY
MDBS

OF Return array of all MDBs in


Project at current location.

UserList()

ARRAY
USERS

OF Return array of all USERs in


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.

Purpose

PROJECT Object Methods

Commands

$ Returns an array of all PROJECT objects

!ARRAY = PROJECTS

$ 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
Get/Set

Origin of profile

Orientation

ORIENTATION Orientation of profile plane


Get/Set

Pointer

POINTER
Get Only

Table 2: 96.

Definition of profile

PROFILE Object Members

2:141

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Methods

Name

Result

Purpose

Profile(POSITION, ORIENTATION,
ARRAY)

PROFILE

Creates a profile object. The


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

2:142

12 Series

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.

REAL

numberEdges()

2:143

Returns the number of edges


within the profile (= vertices-1)

12 Series

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

PROFILE

draw(REAL1, REAL2, REAL3)

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

2:144

12 Series

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 anticlock-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
lines into one.

mergepoints(REAL)

PROFILE

Remove
coincident
consecutive points according
to tolerance supplied

mergepoints()

PROFILE

Remove
consecutive points

2:145

contiguous

coincident

12 Series

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:

2:146

12 Series

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

2:147

12 Series

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

2:148

12 Series

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

2:149

12 Series

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

2:150

12 Series

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
Get/Set

Origin of the grid.

Orientation

ORIENTATION
Get/Set

Orientation of the grid.

Radii

REAL ARRAY
Get/Set

Radii of the grid.

Angles

REAL ARRAY
Get/Set

Angular spacing, from X axes


(zero).

Figure 2:60. RADIALGRID Object Members

2:151

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

RADIALGRID Object Definition Methods

Name

Result

Purpose

Radialgrid( POSITION,
ORIENTATION, ARRAY, ARRAY)

RADIALGRID

Creates a grid with the given


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]
Radius[3]

GridPoint(REAL, REAL)

Figure 2:62. RADIALGRID Object Definition (b)

2:152

12 Series

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

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.

Constructors

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.

2:153

12 Series

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.

Value()

REAL

return undimensioned real with same


value as original.

Dimension()

MEASURE

dimension (of measure) of the


physical quantity recorded by the real.

Unit()
Units()

UNIT

unit of measure of the quantity stored


in the REAL.

AllDimensions()

ARRAY
of Set of all standard dimensions.
MEASURES

AllUnits()

ARRAY
UNITS

Unit Related Queries

of set of all named, standard 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)
Convert(UNIT)
ConvertUnits(UNIT)

REAL

Returns a REAL converted from


original units to the units specified by
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.

2:154

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

CurrentUnits(STRING)
CurrentUnits(UNIT)
CurrentUnits(MEASURE)

REAL

Returns a REAL of the same


dimension as original and whose
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
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.

2:155

real

must

be

purely

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

Distance(BOOLEAN feet,
BOOLEAN us, BOOLEAN
fraction, REAL precision,
BOOLEAN zeroes)

STRING

Convert to a distance :
to feet & inches if feet (otherwise
inches);
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.

2:156

12 Series

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

2:157

12 Series

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,
COLUMNFORMAT, STRING heading)

Adds the column with the


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.

2:158

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

Initialise()

Re-initialises
counter.

the

next

EvaluateTable()

Re-evaluates on the table


primary key and re-sorts.

Keys()

STRING
ARRAY

Returns an ARRAY of
STRINGS that are the
column keys used on this
report.

ColumnFormat(STRING key)

COLUMN
FORMAT

Returns the column format of


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


Rtext)

BOOLEAN

Evaluates the report using all


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,
ARRAY)

BOOLEAN

Similar to Results() but


only values matching the
string are put into the two
arrays.

ResultsMatch(STRING, ARRAY)

BOOLEAN

As above but only Dtext is


evaluated.

2:159

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

NextEntries(REAL n, ARRAY Dtext,


ARRAY Rtext)

BOOLEAN

Evaluates the report using


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,


ARRAY Rtext)

BOOLEAN

Evaluates the report with the


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


value, ARRAY Dtext, ARRAY Rtext)

BOOLEAN

Similar to NextEntries() but


only values matching value
are put into the two arrays.

NextEntriesMatch(REAL n, STRING
value, ARRAY Dtext)

BOOLEAN

As above but only Dtext is


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

2:160

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.58

RTOGGLE Gadget
Members

Name

Result

Purpose

val

BOOLEAN
Get/Set

Current value true or false.

index

REAL
Only

onVal

STRING
Get/Set

Associated selected value.

offVal

STRING
Get/Set

Associated unselected value.

visible

BOOLEAN
Get/Set

Visibility.

active

BOOLEAN
Get/Set

Active (greyed-in) status.

callback

STRING
Get/Set

Callback string.

tag

STRING
Get/Set

Tag text.

Get Index of radio button within


the group.

Table 2: 107. RTOGGLE Object Members

2:161

12 Series

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

Refresh( )

NO RESULT Refreshes the display of the


gadget.

Shown( )

BOOLEAN

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
Name.

Returns the last picked


popup menu for the gadget.

Get shown status.

Colour

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.

2:162

12 Series

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

2:163

12 Series

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,
DBREF)

No Result

Set/unset the clipping status of the


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
(BOOLEAN, DBREF)

No Result

Highlight the items in the 3d view


that are in the clip list for this
section plane. DBREF is the
reference of the VIEW element

redefinePoints
(DIRECTION)

No Result

Clear the points defining the


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


Section Plane.
99 = transparent, 1 = opaque

the

Query Methods
Name

Result

Purpose

isValid ()

BOOLEAN

Checks if the section plane object


is valid.

queryDbref ()

DBREF

Returns the
element.

2:164

actual

database

12 Series

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


Section Plane.

of

the

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
Manager Object

Plane

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

2:165

Adds the SECTIONPLANE object to


the 3D View.

12 Series

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
(BOOLEAN)

No Result

Show/hide the side of each section


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
(STRING1,STRING2,
DIRECTION)

No Result

Creates an SPLA with the given name


STRING1 in the PLLB named
STRING2, extruded in the given
DIRECTION.

endCreatePoints

No Result

Finish collecting points for the SPLA

2:166

12 Series

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,
library name, first
point, second
point, extrusion
direction)

SECTIONPLANE

Creates a new SPLA element with a


specified name, which resides in a
specific library. The first and second
points represent the locations of the
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,
library name,
point, normal
direction)

SECTIONPLANE.

Creates a new FPLA element with a


specified name, which resides in a
specific library. The position and
normal directions must be set. The
new FPLA will be drawn in the 3D
view.

createPpla (name,
library name,
point)

SECTIONPLANE.

Creates a new PPLA element with a


specified name , which resides in a
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

2:167

12 Series

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 isnt
specified, it will be set to
Dtext by default.

Val

REAL
Get/Set

Val

ARRAY OF Selected field numbers of a


REAL
multiple choice list. (1,2,)
Get/Set

DText

STRING
ARRAY
Get/Set

Set or get the entire list of


display texts.

DText[n]

STRING
Get Only

Get the display text of the


n'th field.

PickedField

REAL
Get Only

Last picked list field number.

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.

Selected field number of a


single choice list. (1,2,)

Table 2: 111. SELECTOR Object Members

Methods

2:168

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

Select(STRING text, STRING


value)

NO RESULT Select specified item in a


selector. text must be
Rtext or Dtext. value is
the field RTEXT or DTEXT to
be selected.

Select(STRING text, Array


values)

NO RESULT Select
multiple
choice
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

Clear()

NO RESULT Clear selector contents.

ClearSelection()

NO RESULT Clear selections only.

Background()

STRING

Returns the last picked


popup menu for the gadget.

Get
Background
Name.

Colour

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

2:169

12 Series

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.

2:170

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.62

SESSION Object
Members

Name

Type

Purpose

UniqueID

STRING
Get/Set

Internal ID

Name

STRING
Get/Set

Session Name

Login

STRING
Get/Set

Users login ID

Host

STRING
Get/Set

ID of the Machine running


the session

Entered

STRING
Get/Set

Time of entering the session

LocationName

STRING
Get/Set

Name of
Session

IsRemote

STRING
Get/Set

True for Sessions at Remote


locations

IsCurrent

BOOLEAN
Get/Set

TRUE for Users


SESSION object

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 DBs in the


DB
MDB of the SESSION object.

Location

for

own

Table 2: 113. SESSION Object Members

Methods

2:171

12 Series

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.

2:172

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Command

!SESSION = CURRENT SESSION

2.5.63

$ Returns the current session object.

SLIDER Gadget
Members

Name

Type

Purpose

visible

BOOLEAN
Get/Set

Visibility.

active

BOOLEAN
Get/Set

Active (greyed-in) status.

callback

STRING
Get/Set

Callback string.

tag

STRING
Get/Set

Tag text - not displayed for


this gadget.

val

REAL
Get/Set

Current value as integer.

background

REAL
Get/Set

Background Colour Number.

background

STRING Set Background Colour Name.


only

range

REAL
ARRAY
Get/Set

Range Start, End and


optional Step(>0) as integers.
The start value may be less
than the end value. Array
size must be 2 or more.

tickstyle

REAL
Get/Set

Tick style as integer.


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

2:173

12 Series

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 buttons callback and/or the forms
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
Name.

Colour

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..
NO RESULT Set keyboard focus to
gadget. Allows arrow keys to
drive slider.

SetFocus()

Table 2: 116. SLIDER Object Methods

2:174

12 Series

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 substring two.

Before(STRING two)

STRING

Return
sub-string
before
leftmost occurrence of substring two.

Block()

BLOCK

Make STRING into a BLOCK


for evaluation.

2:175

12 Series

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

2:176

to

12 Series

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
string.

LowCase()

STRING

Convert string to lower case.

LT(STRING)

BOOLEAN

Comparison using
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:

of

* for
any
characters

characters

in

ASCII

number

of

? for any single character.


MatchWild(STRING two, STRING
multiple)

BOOLEAN

TRUE if strings are the same


as above but multiple
redefines the wildcard for any
number of characters.

MatchWild(STRING two, STRING


multiple,STRING single)

BOOLEAN

TRUE if strings are the same


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


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.

2:177

to

an

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

Position()

POSITION

Convert
STRING
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
three)

STRING

Replace all occurrences of


sub-string two with sub-string
three.

Replace(STRING two,STRING
three,REAL nth)

STRING

Replace all occurrences of


sub-string two with sub-string
three starting at the nth
occurrence
(or
-nth
occurrence from the end).

Replace(STRING wo,STRINGt
hree,REAL nth,REAL count)

STRING

Replace count occurrences


of sub-string two with substring 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.

2:178

to

12 Series

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.

2:179

12 Series

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
nchars)

STRING

Returns a sub-string, 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
char)

STRING

Reduce multiple occurrences


of char to a single occurrence
throughout
the
STRING
(options = M).

Trim(STRINGoptions)

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.

2:180

12 Series

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

2:181

12 Series

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
(BOOLEAN)

none

Sets modify mode on or off

enableModifyMode ()

BOOLEAN

Returns TRUE if modify mode is


enabled, else returns FALSE

enableModifyMode
(BOOLEAN)

BOOLEAN

If TRUE, then modify mode is


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
(BOOLEAN)

No Result

If TRUE, then features (ppoints,


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.

2:182

12 Series

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
Key collection.

Primary

PrimaryKey()

DBREF
ARRAY

Returns the primary Key of


the table, reference list for the
columns of the table.

Columns()

COLUMN
ARRAY

Returns
the
column
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.

2:183

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

Column(STRING key)

ARRAY

Returns the contents


column identified by key.

Row(DBREF)

ARRAY

Returns the contents of row


identified by DBREF.

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.

of

Table 2: 119. Table -:TABLE Object Methods

2.5.67

TEAM Object
Members

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
given a DBREF.

TEAM(STRING)

TEAM

Returns a TEAM object,


given a name or reference
number.

object,

Table 2: 121. TEAM Object Methods

These methods may be used in the following ways

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

2:184

12 Series

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 elements name.
These methods should assist performance improvements to AppWare by making it easier to
get from Database element to Object.
Command

!ARRAY = TEAMS

2.5.68

$ Returns an array of TEAMs

TEXT Gadget
Members

Name

Type

Purpose

Val

STRING
Get/Set

Set or get the contents of


STRING type TEXT field.

Val

REAL
Set

Val

BOOLEAN
Get/Set

Set or get the contents of


BOOLEAN type TEXT field.

Val

'AS
DEFINED
Get/Set

Set or get the contents of the


field according to the user
defined type.

DataType

STRING Get Get the type of the field.


Only

Echo

BOOLEAN
Get Only

Format

STRING Get Get the name of the format


Only
object associated with the
field.

Scroll

REAL
Only

ValidateCall

STRING
Get/Set

2:185

Get/ Set or get the contents of


REAL type TEXT field.

Get the Echo Status. Noecho means that typed


characters will all appear as
asterisks.

Get Get the Scroll Width.


Set/get user-defined
validation callback.

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Type

Purpose

Editable

BOOLEAN
Get/Set

Controls the ability to


interactively edit the content
of a text field.

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


validate)

NO RESULT Sets the value of the field,


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'.

Table 2: 122. TEXT Object Members

Methods

2:186

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Result

Purpose

Seteditable( STRING attrib,


REAL value)

NO RESULT Specify value of named


attribute. Currently the only
attribute
supported
is
HANDLEMODIFY
which
determines when the text
MODIFIED events are fired.
It has values:
0 MODIFIED
(default).

events

off

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.

2:187

12 Series

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
Only

Get Get the number of lines of


text in the gadget.

Table 2: 124. TEXTPANE Gadget Members

Methods

Name

Result

Purpose

FullName()

STRING

Get the full gadget


e.g.'!!Form.gadget'.

Name()

STRING

Get the
'gadget'.

Owner()

FORM

Get owning form.

Clear()

NO RESULT Clear all lines from the gadget

Line(REAL )

STRING

SetLine(REAL, STRING)

NO RESULT Replace specified line number by


STRING.

CurPos()

ARRAY[2]
OF REAL

Get
cursor
character).

position

(line,

SetCurPos(REAL[2])

NO RESULT Set
cursor
character).

position

(line,

SetCurPos(REAL, REAL)

NO RESULT Set
cursor
character).

position

(line,

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.

2:188

gadget's

name,

name,

e.g.

Get the text of given line

12 Series

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).

2:189

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

.--------<--------.
/
|
>-- TEXTPane gname --+-- tagtext---------|
+-- <fganch> -------|
+-- <fgdock> -------|
+-- <fgpos> --------|
+-- FIXCHARS -------|
+-- CORE -----------*
-- <vshap> --->

Core managed gadget

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
Get/Set

Toggles
value
between
TRUE and FALSE.

Name

Result

Purpose

AddPixmap(STRING file1, STRING


file2, STRING file3 )
AddPixmap(STRING file1, STRING
file2)
AddPixmap(STRING file )

NO RESULT Adds pixmaps to be used for


the unselected, selected and
inactive states. The last two
are optional.

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.

Methods

2:190

12 Series

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
Name.

Colour

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.

2:191

12 Series

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 deactivated. 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

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

2:192

Purpose

12 Series

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

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.

Constructors
Unit()

Table 2: 128. UNIT Object Members

Methods

Name

Result

Purpose

STRING

Long description of unit, very often


same as Name()

Name String Methods


Description()
String()

2:193

12 Series

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()
Ptype()

STRING

Hash code of unit. If a compound


unit returns 'COMPOUND', if
derived from component standard
units (e.g. Area units are Distance
squared) returns 'DRVD'.

REAL

Unique integer ID for this unit.


Positive if standard unit.

General Queries
Enum()

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

of Set of all named, standard Units.

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().

2:194

12 Series

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

Users description, up to 120


characters.

Access

STRING

Users access rights (FREE,


GENERAL, RESTRICTED).

Refno

STRING

STRING
containing
Database reference number.

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
given a DBREF.

USER(STRING)

USER

Returns a USER object,


given a name or reference
number.

Table 2: 129. USER Object Members

Method

object,

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 elements name.

2:195

12 Series

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

2.5.74

$ Returns an array of USER objects in current project.

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.

2:196

12 Series

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

2:197

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

.size()

ARRAY
REAL

of Returns the size of the viewfinder


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/Set

Get or set the assigned


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
immediately to this
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

focus
Alpha

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

2:198

12 Series

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
ARRAY[4]
Get/Set

Get
or
set
[x1,y1,x2,y2].

Borders

BOOLEAN
Get/Set

Get or set borders ON (TRUE)


or OFF (FALSE).

Background

REAL
Set

Background

STRING Set Set background Colour Name.


Only

Contents

REAL
ARRAY[2]
Get/Set

Get or set User contents ID.

Defcall

STRING
Get/Set

Get or set default interaction


callback.

Height

REAL
Only

Get Get view height.

Highlight

REAL
Set

Get/ Get or set highlight Colour


Number.

Highlight

STRING Set Set highlight Colour Name


Only

Prompt

GADGET
Get/Set

Subtype

STRING Get Get subtype of graphic view.


Only

Width

REAL
Only

limits

box

Get/ Get or set background Colour


Number

Get or set User Prompt


PARAGRAPH gadget.

Get Get view width.

Table 2: 135. VIEW AREA Object Methods

2:199

12 Series

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

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.

Returns the highlight colour


as a name string.

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.

2:200

12 Series

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
Set

Background

STRING Set Set


background
Only
Name.

Borders

BOOLEAN
Get/Set

Get or set borders ON


(TRUE) or OFF (FALSE).

Contents

REAL
ARRAY[2]
Get/Set

Get or set User Contents ID.

Defcall

STRING
Get/Set

Get or set default interaction


callback.

Height

REAL
Only

Get Get view height.

Highlight

REAL
Set

Get/ Get or set highlight Colour


Number.

Highlight

STRING Set Set highlight Colour Name.


Only

Prompt

GADGET
Get/Set

Subtype

STRING Get Get subtype of graphic view.


Only

Width

REAL
Only

Get/ Get or set background


Colour Number.
Colour

Get or set User Prompt


PARAGRAPH gadget.

Get Get view width.

Table 2: 137. VIEW PLOT Object Members

2:201

12 Series

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

Clear()

NO RESULT Clear gadget contents

Highlight()

STRING

Refresh()

NO RESULT Refreshes the display of the


gadget

SetSize(REAL width, REAL height)

NO RESULT Set view size.

Returns the background


colour as a name STRING.

Returns the highlight colour


as a name STRING.

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

2:202

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.79

VIEW Gadget: VOLUME Views


Members

Name

Type

Background

REAL
Set

Background

STRING Set Set


Background
Only
Name.

Contents

REAL
ARRAY[2]
Get/Set

Get or set User Contents ID.

Defcall

STRING
Get/Set

Get or set default interaction


callback.

Height

REAL
Only

Get Get View Height.

Highlight

REAL
Set

Get/ Get or set Highlight Colour


Number.

Highlight

STRING Set Set Highlight Colour Name.


Only

Prompt

GADGET
Get/Set

Subtype

STRING Get Get Subtype of graphic view.


Only

Width

REAL
Only

Borders

BOOLEAN
Get/Set

Get or set Borders ON


(TRUE) or OFF (FALSE).

Direction

REAL
ARRAY[3]
Get/Set

Direction vector [dE,dN,dU].

EyeMode

BOOLEAN
Get/Set

TRUE for Eyemode FALSE


for Modelmode.

Limits

REAL
ARRAY[6]
Get/Set

Limits
[E1,E2,N1,N2,U1,U2].

Mousemode

STRING
Get/Set

'ZOOM',
WALK'.

'PAN',

'ROTATE',

Projection

STRING
Get/Set

PERSPECTIVE
PARALLEL.

or

2:203

Purpose
Get/ Get or set Background
Colour Number
Colour

Get or Set User Prompt


paragraph gadget.

Get Get View Width.

box

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

Name

Type

Purpose

Radius

REAL
Set

Get/ View Radius distance >0.

Range

REAL
Set

Get/ Range distance >0.

Refresh

NO RESULT Refreshes the display of the


gadget.

RestoreView

REAL
Set

Get/ Restores view saved


given view number.

SaveView

REAL
Set

Get/ Saves view as given view


number, in the range 1 to 4.

Shaded

BOOLEAN
Get/Set

Step

REAL
Set

Through

REAL
ARRAY[3]
Get/Set

Through point [E,N,U].

WalkThrough

BOOLEAN
Get/Set

TRUE
for
Walkthrough
(equivalent to Eyemode).

LabelStyle

STRING
Get/Set

Set by specifying ENU or


XYZ. Default is ENU.

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


given view number.

SaveView(REAL storeNumber)

NO RESULT Saves view as given view


number.

as

TRUE for shaded FALSE for


wireline.

Get/ Step size >0.

Table 2: 139. VIEW VOLUME Members

Methods

as

Table 2: 140. VOLUME VIEW Object Methods

2:204

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and 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:
<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:205

12 Series

Software Customisation Reference Manual


Summary of Objects, Members and Methods

2.5.80

XYPosition Object
Members

Name

Type

Purpose

REAL
Get/Set

X component of 2D POSITION.

REAL
Get/Set

Y component of 2D POSITION.

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

2:206

12 Series

Software Customisation Reference Manual


Event Driven Graphics

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.

3:1

12 Series

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:

3.5

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.

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

3:2

12 Series

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.

3:3

12 Series

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

3:4

12 Series

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.

3:5

12 Series

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.

3:6

12 Series

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,
STRING)

Sets the primary and secondary prompt of


the currently active event.

setStackPrompt(STRIN
G, STRING)

Sets the primary prompt of the stacked event


with the passed description.

3:7

12 Series

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.

3:8

12 Series

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:

3:9

12 Series

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:

3:10

12 Series

Software Customisation Reference Manual


Event Driven Graphics

!!edgCntrl.viewStack()
Currently Active EDG Packet
Description
Key
Type
Priority
Initialisation
Action
Form
Remove
Input Data
Pick Packet
Description

:
:
:
:
:
:
:
:
:

Define a linear dimension


editDimension
measure
1
None
!!gphMeasure.setMeasure(!this.return[1])
GPHMEASURE
false
None

Standard Distance Measure

EDG Packet - Stack position [1]

3.9.6

Description
Key
Type
Priority
Initialisation
Action
Form
Remove
Input Data

:
:
:
:
:
:
:
:
:

Standard Navigate
stdNavigate
navi
10
None
!this.moveToDBRef()
None
false
None

Pick Packet
Description

Standard Element Pick

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

3:11

12 Series

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.

3:12

12 Series

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.

3:13

12 Series

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.

3:14

12 Series

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:

3:15

12 Series

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.

3:16

12 Series

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

3:17

12 Series

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.

3:18

12 Series

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.

3:19

12 Series

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.

3:20

12 Series

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.

3:21

12 Series

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


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.

3:22

pick

sequence

to

derive

12 Series

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:

3:23

12 Series

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.

3:24

12 Series

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:

3:25

12 Series

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

3:26

12 Series

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.

3:27

12 Series

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":

3:28

12 Series

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

3:29

12 Series

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.

3:30

12 Series

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.

3:31

12 Series

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>,
<any>)

Circle define centre and radius + control point 2D.

.circleFixDia2D(<any>,
<any>)

Circle centred of defined diameter 2D.

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

3:32

12 Series

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.

3:33

12 Series

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.

3:34

12 Series

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.

3:35

12 Series

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.

3:36

12 Series

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

3:37

12 Series

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.

3:38

12 Series

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

3:39

12 Series

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.

3:40

12 Series

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.

3:41

12 Series

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
ny>)

Derive a circle (arc) with specified radius centred on the


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

3:42

12 Series

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

3:43

12 Series

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.

3:44

12 Series

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.

3:45

12 Series

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

3:46

12 Series

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

3:47

12 Series

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.

3:48

12 Series

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.

3:49

12 Series

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).

3:50

12 Series

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.

3:51

12 Series

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'

3:52

12 Series

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')

3:53

12 Series

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
!packet.key
!packet.priority

= 'Test Packet'
= 'testPacket'
=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

3:54

12 Series

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:

3:55

12 Series

Software Customisation Reference Manual


Event Driven Graphics

-- Define Packet
!packet
.
.
.

= object EDGPACKET()

-- Test for method


if(!option eq 'MOVE") then
!packet.pickPacket
else
!packet.pickPacket
endif

= !this.elementMove()
= !this.elementBY()

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

3:56

12 Series

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.

3:57

12 Series

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.

3:58

12 Series

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.

3:59

12 Series

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

Aid

yes

Tubing
Graphics

yes

yes

yes
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.

3:60

12 Series

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:

3.13.4

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.

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.

3:61

12 Series

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.

3:62

12 Series

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.

3:63

12 Series

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
CYLINDER, etc.

.pickLine

POINTVECTOR

Pick vector when picking an item, i.e. direction of view


and the position of the direction on the viewing plane.

aid

type

picked,

e.g.

LINE,

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:

3.15

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.

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.

3:64

12 Series

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.

3:65

12 Series

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.

3:66

12 Series

Software Customisation Reference Manual


PML 1 Expressions

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

A:1

12 Series

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)

A.2

SIN(!angleB) )

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.

A:2

12 Series

Software Customisation Reference Manual


PML 1 Expressions

A.2.1

Logical operators.

Logical functions.

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. For more information,
see Section C.5, Using Positions, Directions and
Orientations in Expressions.

NOT
OR
Note: The operators EQ, NE, LT, GT, LE and GE are sometimes referred to as comparator
or relational operators; NOT, AND and OR are sometimes referred to as Boolean
operators. See also Section C.11, Precisions of Comparisons for tolerances in
comparing numbers.
AND

Synopsis

log1 AND log2

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

A:3

-> logical

12 Series

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. See
Section C.5.4 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.

A:4

12 Series

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. See Section
C.5.4 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

Description

Perform the logical NOT on a logical value.

Side Effects

None.

Example

not TRUE -> FALSE

Errors

None.

A:5

-> logical

12 Series

Software Customisation Reference Manual


PML 1 Expressions

OR

Synopsis

OR log2

Description

Perform the logical inclusive OR between two logical values.


(The exclusive OR is defined by using NE.)

-> logical

Allows numbers instead of logical values.

A.2.2

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.

Logical Functions
The logical functions available are:
Function

Comments

BADREF
DEFINED,UNDEFINED
CREATED
DELETED
EMPTY
MATCHWILD
MODIFIED
UNSET
VLOGICAL
BADREF

Synopsis

BADREF (id)

Description

TRUE if id is invalid, else FALSE.

Side Effects

None

Example

BADREF(TREF)

Errors

None.

A:6

-> logical

->

true if TREF=nulref

12 Series

Software Customisation Reference Manual


PML 1 Expressions

DEFINED and UNDEFINED

Synopsis

Description

DEFined (variable_name)

-> logical

DEFined
(variable_name,number)

-> logical

UNDEFined (variable_name)

-> logical

UNDEFined (variable_name ,
number)

-> logical

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 (
DEFINED (
DEFINED (
DEFINED (
DEFINED (
UNDEFINED
DEFINED (

Errors

None.

!var ) -> TRUE


!array ) -> TRUE
!array[1] )) -> TRUE
!array , 1 ) -> TRUE
!var) -> FALSE
( !array) -> TRUE
!array , 3 ) -> FALSE

CREATED

Synopsis

CREATED

Description

Returns TRUE if the element has been created since the set
date.

Side Effects

None.

Example

CREATED -> TRUE

Errors

None.

A:7

-> logical

12 Series

Software Customisation Reference Manual


PML 1 Expressions

DELETED

Synopsis

DELETED

Description

Returns TRUE if the element has been deleted since the set
date.

Side Effects

None.

Example

DELETED -> TRUE

Errors

None.

-> logical

EMPTY

Synopsis

EMPTY(text)

Description

Returns TRUE if text is a zero length string, else FALSE

Side Effects

None.

Example

EMPTY() -> TRUE


EMPTY(not empty) -> FALSE

Errors

None.

-> logical

MATCHWILD

Synopsis

Description

MATCHW/ILD( text1, text2)

-> logical

MATCHW/ILD( text1, text2,


text3)

-> logical

MATCHW/ILD( text1, text2,


text3, text4)

-> logical

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

A:8

12 Series

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,
(descendants).

this

element

and

everything

below

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.

A:9

12 Series

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
DESCENDANTS

Returns TRUE if any geometry


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 /
PIPE1

Returns TRUE if /PIPE1 has


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)

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.

A:10

-> logical

12 Series

Software Customisation Reference Manual


PML 1 Expressions

Example

Errors

UNSET( DESC )

TRUE where DESC is an unset text


attribute

UNSET(CRFA)

FALSE where CRFA contains unset


reference attributes

None.

VLOGICAL
VLOGICAL is used for the late evaluation of variables.
Synopsis

Description

VLOGICAL ( variable_name ))

-> logical

VLOGICAL ( variable_name ,
number)

-> logical

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.

A.2.3

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.

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.

A:11

12 Series

Software Customisation Reference Manual


PML 1 Expressions

A.3

Logical operators. See Logical Operators.

Logical functions. See Logical Functions.

Numeric (Real) Expressions


In expressions, integers are treated as reals; they are fully interchangeable. Numeric
expressions can contain:

A.3.1

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.

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.

A:12

12 Series

Software Customisation Reference Manual


PML 1 Expressions

A.3.2

Numeric (Real) Operators


The numeric operators available are:

A.3.3

Operator

Comments

Addition.

Subtraction.

Multiplication.

Division.

ADD and SUBTRACT (+ and -)

Synopsis

A.3.4

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 subexpression.

Side Effects

Units are consolidated across add and subtract.

Example

1
1
+
-

Errors

Floating point underflow.

+
1
1

2 -> 3.0
2 -> 1.0
-> 1.0
-> -1.0

MULTIPLY and DIVIDE (* and /)

Synopsis

Description

number * number

-> number

number / number

-> number

Multiply or divide two numbers. They can also be used as


unary operators at the beginning of a parenthesised subexpression. Numeric underflow is not considered to be an
error and neither is it flagged as a warning. The result returned
is zero.

A:13

12 Series

Software Customisation Reference Manual


PML 1 Expressions

A.3.5

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.

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.

A:14

12 Series

Software Customisation Reference Manual


PML 1 Expressions

Function

Comments

MAX ( number1, number2[ ,


number3 [. . .]]) )

Gives the maximum value of the arguments.

MIN ( number1, number2[ ,


number3 [. . .]]) )

Gives the minimum value of the arguments.

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 )

Description

Returns the absolute value of a real.

Side Effects

None.

Example

ABS ( -3.2 ) -> 3.2

Errors

None.

-> number

ACOS, ASIN, ATAN and ATANT

Synopsis

ASIN ( number1 )

-> number

ACOS ( number1 )

-> number

ATAN ( number1 )

-> number

ATANT ( number1, number2 )

-> number

A:15

12 Series

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 )

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.

-> number

ARRAY

Synopsis

ARRAY(pos or dir or ori)

Description

Converts a position, direction or orientation value or attribute into


three numbers.

Side Effects

None

Example

ARRAY(e100 )

Errors

None.

-> 100

-> number

ARRAYSIZE

Synopsis

ARRAYSize ( variable-name )

Description

Give the size of an array variable.

Side Effects

If the array variable does not exist, the result is undefined.

A:16

-> number

12 Series

Software Customisation Reference Manual


PML 1 Expressions

Example

ARRAYSIZE(!array)

Errors

The variable is a scalar variable and not an array variable.

-> 2.0

The variable is an array variable element and not an array


variable.
ARRAYWIDTH

Synopsis

ARRAYWIDTH ( variable-name )

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]
!ARRAY[2]
!ARRAY[3]
!ARRAY[4]
!ARRAY[5]
!ARRAY[6]
!ARRAY[7]
!ARRAY[8]

-> number

Bread
is
for
life,
not
just
for
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

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.

A:17

-> text

12 Series

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 )

Description

Return the truncated integer value of a number.

Side Effects

None.

Example

INT ( 1.6 )
INT ( -23.7 )

Errors

Integer overflow.

-> number

-> 1.0
-> -23.0

LENGTH

Synopsis

LENgth ( text1 )

Description

Return the length of text1.

Side Effects

None.

Example

LENGTH ( abcdef ) -> 6.0


LENGTH ( ) -> 0.0

Errors

None.

-> number

ALOG

Synopsis

LOG ( number1 )

Description

Return the natural logarithm of a number..

A:18

-> number

12 Series

Software Customisation Reference Manual


PML 1 Expressions

Side Effects

None.

Example

LOG( 3 ) -> 1 0986123

Errors

Negative arguments.

MATCH

Synopsis

MATch ( text1 , text2)

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.

-> number

MAX and MIN

Synopsis

MAX ( number1 , number2 [ ,


number3 [ ... ] ] )

-> number

MIN ( number1 , number2 [ ,


number3 [ ... ] ] )

-> number

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 )

Description

Multiply a real by -1.0.

Side Effects

None.

Example

NEG ( 1 ) -> -1.0

Errors

None.

A:19

-> number

12 Series

Software Customisation Reference Manual


PML 1 Expressions

NINT

Synopsis

NINT ( number1 )

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

Errors

Integer overflow.

(
(
(
(

-> number

1.1 )
-> 1.0
-23.7 ) -> -24.0
1.5 )
-> 2.0
-11.5 ) -> -12.0

OCCUR

Synopsis

OCCUR(text1, text2)

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

-> integer

REAL

Synopsis

REAL ( text1 )

Description

Try to read a real number at the beginning of text1.

-> number

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.

A:20

12 Series

Software Customisation Reference Manual


PML 1 Expressions

POWER

Synopsis

POWer ( number1 , number2 )

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
(effectively divide by zero).

non-positive

-> real

second

argument

Negative first argument and non-integer second argument.


SQRT

Synopsis

SQrt ( number1 )

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)

Errors

Negative argument.

-> number

= 4Metre

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

A:21

12 Series

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
corresponding to the index number as a number.

element

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

A:22

12 Series

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

A:23

12 Series

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 elements axis system. This
absolute position can be expressed in different coordinate systems: the default is again the
owners 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

A:24

12 Series

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.

A:25

12 Series

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.

A:26

12 Series

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.

A.5.4

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.

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.

A:27

12 Series

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


POS

$ Only the second coordinate of POS is compared;

E10N10 GT E0N0

$ Is true because the inequality is verified for the X

$ if it is greater than 10, then the result is true.

$ 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.

A:28

12 Series

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.

A:29

12 Series

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.

A:30

12 Series

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 )

A.6

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.

Text Expressions
Text expressions can contain the following:

A.6.1

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

Text Operator
The text operator available is +, used for concatenation.
Synopsis

text1 + text2 -> text

Description

Return the concatenation of two text strings.

Side Effects

None.

Example

no + space -> nospace

Errors

Text result too long.

A:31

-> text

12 Series

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 )

Description

Return the substring of text1 which is after the leftmost


occurrence of text2 in text1.

-> text

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 )

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.

A:32

-> text

12 Series

Software Customisation Reference Manual


PML 1 Expressions

DISTANCE

Synopsis

DISTance ( number1 )
DISTance( number1, logical1,
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 aabb.cc/dd. Otherwise, text is the
STRING conversion of number1.

-> text
-> text

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 (.).

A:33

12 Series

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

15.1/2

Some examples, where the current distance units are feet and
inches:
DIST(34.5,TRUE,TRUE,TRUE,100,TRUE)
DIST(34.5,FALSE,TRUE,FALSE,1,TRUE)
DIST(34.5,FALSE,TRUE,TRUE,4,FALSE)
DIST(128.5,TRUE,FALSE,TRUE,2,TRUE)

->
->
->
->

2-10.1/2.
34.5
34 1/2
1008.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


US
Fraction
Denom 100
Zeros

Feet & Inch


US
Fraction
Denom 32
No Zeros

Inches
US
Decimal
DP 1
Zeros

Inches
US
Fraction

128.5

10-_8_1/2___

10-_8_1/2__

128.5

128_1/2

1008.1/2

120.0

10-_0_______

10-_0______

120.0

120____

1000____

11.5

0-11_1/2___

11.5

11_1/2

011.1/2

0.75

0-_0_3/4___

0.8

3/4

001____

0.0

0-_0_______

______

0.0

____

000____

-10.0

-0-10_______

-10______

-10.0

-10____

-010____

Errors

11_1/2__
3/4__

Denom 4
No Zeros

Feet & Inch


PDMS
Fraction
Denom 2
Zeros

The value is too big to be converted.

A:34

12 Series

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

Description

PART(text1, number1)

-> text

PART(text1, number1 ,
text2)

-> text

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)

A:35

12 Series

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

A:36

12 Series

Software Customisation Reference Manual


PML 1 Expressions

The following examples all give the same result:


REPLACE(cat1 cat2 cat3 cat4 cat5
cat9 cat10, cat, dog, 4, 2)
REPLACE(cat1 cat2 cat3 cat4 cat5
cat9 cat10, cat, dog, 5, -2)
REPLACE(cat1 cat2 cat3 cat4 cat5
cat9 cat10, cat, dog,-6, -2)
REPLACE(cat1 cat2 cat3 cat4 cat5
cat9 cat10, cat, dog, -7, 2)

cat6 cat7 cat8


cat6 cat7 cat8
cat6 cat7 cat8
cat6 cat7 cat8

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

A:37

->

12 Series

Software Customisation Reference Manual


PML 1 Expressions

STRING

Synopsis

Description

STRing ( any scalar type )

-> text

STRing ( number , text1 )

-> text

STRing ( pos , text1 )

-> text

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

A:38

12 Series

Software Customisation Reference Manual


PML 1 Expressions

SUBSTRING

Synopsis

Description

SUBString ( text1 , number1 )

-> text

SUBString ( text1 , number1 ,


number2 )

-> text

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

Errors

None.

(
(
(
(
(
(
(

abcdef
abcdef
abcdef
abcdef
abcdef
abcdef
abcdef

, 3 ) -> cdef
,-3 ) -> abcd
, 3 , 2 ) -> cd
, -3, 2 ) -> de
, 3 , -2 ) -> bc
, 10 ) ->
, -10 , 2 ) -> ab

TRIM

Synopsis

Description

TRIM ( text1 )

-> text

TRIM ( text1, text2 )

-> text

TRIM ( text1, text2, text3 )

-> text

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.

A:39

12 Series

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

Description

VTEXT ( variable-name )

-> text

VTEXT ( variable-name ,
number )

-> text

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.

A:40

12 Series

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

A:41

12 Series

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).

A:42

12 Series

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.


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.

VVAL(!ARC6) where !ARC6 has never been

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

A:43

12 Series

Software Customisation Reference Manual


PML 1 Expressions

A:44

12 Series

Software Customisation Reference Manual

Index

A
ABS . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:15
ACOS . . . . . . . . . . . . . . . . . . . . . . . . . . A:15
ADD . . . . . . . . . . . . . . . . . . . . . . . . . . . A:13
AFTER . . . . . . . . . . . . . . . . . . . . . . . . . A:32
ALOG . . . . . . . . . . . . . . . . . . . . . A:16, A:18
AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:3
AREA command ( Design and ) . . . . . 2:200
Area view gadget . . . . . . . . . . . . . . . . 2:200
Area view setup mode . . . . . . . . . . . . 2:200
ARRAY . . . . . . . . . . . . . . . . . . . . . . . . . A:16
ARRAYSIZE . . . . . . . . . . . . . . . . . . . . . A:16
ARRAYWIDTH . . . . . . . . . . . . . . . . . . . A:17
ASIN . . . . . . . . . . . . . . . . . . . . . . . . . . . A:15
ATAN . . . . . . . . . . . . . . . . . . . . . . . . . . A:15
ATANT . . . . . . . . . . . . . . . . . . . . . . . . . A:15
Attributes
in expressions . . . . . . . . . . . . . . . . A:41

B
BADREF . . . . . . . . . . . . . . . . . . . . . . . . . A:6
BEFORE . . . . . . . . . . . . . . . . . . . . . . . . A:32
Boolean operators . . . . . . . . . . . . . . . . . . A:3

C
COLUMNFORMAT . . . . . . . . . . . . . . . . 2:35
Comparator operators . . . . . . . . . . . . . . . A:3
Comparison precision
in expressions . . . . . . . . . . . . . . . . A:42
Components . . . . . . . . . . . . . . . . . . . . . . 3:3
Main . . . . . . . . . . . . . . . . . . . . . . . . . 3:3
Secondary . . . . . . . . . . . . . . . . . . . . 3:3

COSINE . . . . . . . . . . . . . . . . . . . . . . . . A:18
CREATED . . . . . . . . . . . . . . . . . . . . . . . A:7

D
DEFINED . . . . . . . . . . . . . . . . . . . . . . . . A:7
DELETED . . . . . . . . . . . . . . . . . . . . . . . . A:8
DISTANCE . . . . . . . . . . . . . . . . . . . . . . A:33
format . . . . . . . . . . . . . . . . . . . . . . . A:33
US format . . . . . . . . . . . . . . . . . . . . A:33
DIVIDE . . . . . . . . . . . . . . . . . . . . . . . . . A:13

E
EMPTY . . . . . . . . . . . . . . . . . . . . . . . . . . A:8
EQUAL . . . . . . . . . . . . . . . . . . . . . . . . . . A:4
Event
Control System . . . . . . . . . . . . . . . . 3:6
Flow . . . . . . . . . . . . . . . . . . . . . . . . . 3:5
Packet . . . . . . . . . . . . . . . . . . . . . . . 3:5
Event Driven Graphics . . . . . . . . . . . . . . 3:1
Event Packet . . . . . . . . . . . . . . . . . . . . 3:11
Example
Defining Pick Sequences . . . . . . . . 3:52
Repeat Element Pick . . . . . . . . . . . 3:24
Single Element Pick . . . . . . . . . . . . 3:23
Using Pick Packets . . . . . . . . . . . . 3:54
Expressions
directions in . . . . . . . . .A:28, A:29, A:31
format . . . . . . . . . . . . . . . . . . . . A:1, A:2
IDS in . . . . . . . . . . . . . . . . . . . . . . . A:22
logical . . . . . . . . . . . . . . . . . . . . . . . . A:2
logical array . . . . . . . . . . . . . . . . . . A:11
nesting . . . . . . . . . . . . . . . . . . . . . . . A:2
numeric . . . . . . . . . . . . . . . . . . . . . A:12

Index page i

12 Series

Software Customisation Reference Manual

PML . . . . . . . . . . . . . . . . . . . . . . . . . A:1
positions in . . . . . . . . . . . . . . . . . . . A:23
precision of comparisons . . . . . . . . A:42
real . . . . . . . . . . . . . . . . . . . . . . . . . A:12
real array . . . . . . . . . . . . . . . . . . . . A:22
types . . . . . . . . . . . . . . . . . . . . . . . . . A:1

LE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:5
LENGTH . . . . . . . . . . . . . . . . . . . . . . . . A:18
Logical functions . . . . . . . . . . . . . . . . . . A:6
LOWCASE . . . . . . . . . . . . . . . . . . . . . . A:35
LT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:5

M
F
format distances . . . . . . . . . . . . . . . . . . A:33
FROM . . . . . . . . . . . . . . . . . . . . . . . . . . A:25
Functions
logical . . . . . . . . . . . . . . . . . . . . . . . . A:6
numeric . . . . . . . . . . . . . . . . . . . . . . A:14
real . . . . . . . . . . . . . . . . . . . . . . . . . A:14

MATCH . . . . . . . . . . . . . . . . . . . . . . . . A:19
MATCHWILD . . . . . . . . . . . . . . . . . . . . . A:8
MAX . . . . . . . . . . . . . . . . . . . . . . . . . . . A:19
MIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:19
MODIFIED . . . . . . . . . . . . . . . . . . . . . . . A:9
Multi Discipline Route Manager . . . . . 2:106
MULTIPLY . . . . . . . . . . . . . . . . . . . . . . A:13

Gadget
2D Screen Position . . . . . . . . . . . . . 2:10
Anchoring . . . . . . . . . . . . . . . . . . . . . 2:7
BAR . . . . . . . . . . . . . . . . . . . . . . . . 2:25
BUTTON . . . . . . . . . . . . . . . . . . . . . 2:29
COMBOBOX . . . . . . . . . . . . . . . . . 2:37
CONTAINER . . . . . . . . . . . . . . . . . 2:41
Docking . . . . . . . . . . . . . . . . . . . . . . 2:7
FRAME . . . . . . . . . . . . . . . . . . . . . . 2:68
LINE . . . . . . . . . . . . . . . . . . . . . . . . 2:76
LIST . . . . . . . . . . . . . . . . . . . . . . . . 2:88
OPTION . . . . . . . . . . . . . . . . . . . . 2:113
PARAGRAPH . . . . . . . . . . . . . . . . 2:118
Positioning . . . . . . . . . . . . . . . . . . . . 2:8
RTOGGLE . . . . . . . . . . . . . . . . . . 2:161
SELECTOR . . . . . . . . . . . . . . . . . 2:168
SLIDER . . . . . . . . . . . . . . . . . . . . 2:173
Syntax Graphs . . . . . . . . . . . . . . . . . 2:6
Tagwidth . . . . . . . . . . . . . . . . . . . . . 2:10
TEXTPANE . . . . . . . . . . . . . . . . . 2:188
TOGGLE . . . . . . . . . . . . . . . . . . . 2:190
Width and Height . . . . . . . . . . . . . . . 2:9
GE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:5
Graphical Selection . . . . . . . . . . . . . . . . 2:72
GT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:5

NEGATE . . . . . . . . . . . . . . . . . . . . . . . A:19
NEQUAL . . . . . . . . . . . . . . . . . . . . . . . . A:4
NINT . . . . . . . . . . . . . . . . . . . . . . . . . . . A:20
NOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:5
NUMBER (REAL) . . . . . . . . . . . . . . . . . A:20
Numeric expressions . . . . . . . . . . . . . . A:12
Numeric operators . . . . . . . . . . . . . . . . A:13

I
IDList . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:74
IDs in expressions . . . . . . . . . . . . . . . . . A:22
INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:18

L
Late evaluation of expressions . . A:21, A:40
Late evaluation of variables . . . . . . . . . A:40

O
OBJECT . . . . . . . . . . . . . . . . . . . . . . . 2:113
Object
ALERT . . . . . . . . . . . . . . . . . . . . . . 2:11
ARC . . . . . . . . . . . . . . . . . . . . . . . . 2:12
ARRAY . . . . . . . . . . . . . . . . . . . . . 2:20
BANNER . . . . . . . . . . . . . . . . . . . . 2:24
BLOCK . . . . . . . . . . . . . . . . . . . . . . 2:27
BOOLEAN . . . . . . . . . . . . . . . . . . . 2:27
BORE . . . . . . . . . . . . . . . . . . . . . . . 2:28
Classification . . . . . . . . . . . . . . . . . . 2:1
COLLECTION . . . . . . . . . . . . . . . . 2:33
COLUMN . . . . . . . . . . . . . . . . . . . . 2:34
DATEFORMAT . . . . . . . . . . . . . . . 2:42
DATETIME . . . . . . . . . . . . . . . . . . . 2:43
DB . . . . . . . . . . . . . . . . . . . . . . . . . 2:45
DBREF . . . . . . . . . . . . . . . . . . . . . . 2:47
DBSESS . . . . . . . . . . . . . . . . . . . . 2:48
DIRECTION . . . . . . . . . . . . . . . . . . 2:48
EXPRESSION . . . . . . . . . . . . . . . . 2:50
FILE . . . . . . . . . . . . . . . . . . . . . . . . 2:51
FMSYS . . . . . . . . . . . . . . . . . . . . . 2:53
FORM . . . . . . . . . . . . . . . . . . . . . . 2:56
FORMAT . . . . . . . . . . . . . . . . . . . . 2:65
LINE . . . . . . . . . . . . . . . . . . . . . . . . 2:77
LINEARGRID . . . . . . . . . . . . . . . . . 2:86
LOCATION . . . . . . . . . . . . . . . . . . 2:93

Index page ii

12 Series

Software Customisation Reference Manual

MACRO . . . . . . . . . . . . . . . . . . . . . 2:95
MDB . . . . . . . . . . . . . . . . . . . . . . . . 2:95
MEASURE . . . . . . . . . . . . . . . . . . . 2:97
MENU . . . . . . . . . . . . . . . . . . . . . . . 2:99
NUMERICINPUT . . . . . . . . . . . . . 2:111
ORIENTATION . . . . . . . . . . . . . . . 2:117
PLANE . . . . . . . . . . . . . . . . . . . . . 2:120
PLANTGRID . . . . . . . . . . . . . . . . . 2:124
POINTVECTOR . . . . . . . . . . . . . . 2:131
POSITION . . . . . . . . . . . . . . . . . . 2:134
POSTEVENTS . . . . . . . . . . . . . . . 2:139
PROFILE . . . . . . . . . . . . . . . . . . . 2:141
PROJECT . . . . . . . . . . . . . . . . . . . 2:140
RADIALGRID . . . . . . . . . . . . . . . . 2:151
REAL . . . . . . . . . . . . . . . . . . . . . . 2:153
REPORT . . . . . . . . . . . . . . . . . . . 2:158
SESSION . . . . . . . . . . . . . . . . . . . 2:171
STRING . . . . . . . . . . . . . . . . . . . . 2:175
TABLE . . . . . . . . . . . . . . . . . . . . . 2:182
TEAM . . . . . . . . . . . . . . . . . . . . . . 2:184
Type Details . . . . . . . . . . . . . . . . . . 2:11
UNDOABLE . . . . . . . . . . . . . . . . . 2:192
UNIT . . . . . . . . . . . . . . . . . . . . . . . 2:193
USER . . . . . . . . . . . . . . . . . . . . . . 2:195
XYPosition . . . . . . . . . . . . . . . . . . 2:206
Objects
Forms and Menus . . . . . . . . . . . . . . 2:4
Methods Available . . . . . . . . . . . . . . 2:3
OCCUR . . . . . . . . . . . . . . . . . . . . . . . . . A:20
Operators
logical . . . . . . . . . . . . . . . . . . . . . . . . A:3
numeric . . . . . . . . . . . . . . . . . . . . . . A:13
text . . . . . . . . . . . . . . . . . . . . . . . . . A:31
OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:6

Prompts
Change . . . . . . . . . . . . . . . . . . . . . . 3:9
Published Interface . . . . . . . . . . . . . . . 3:15

Q
Querying
variables and expressions . . . . . . . A:41

R
REAL . . . . . . . . . . . . . . . . . . . . . . . . . . A:20
Real arrays in expressions . . . . . . . . . . A:22
Real expressions . . . . . . . . . . . . . . . . . A:12
Relational operators . . . . . . . . . . . . . . . . A:3
REPLACE . . . . . . . . . . . . . . . . . . . . . . A:35
Rule Combination . . . . . . . . . . . . . . . . . 3:60

S
Section Plane . . . . . . . . . . . . . . . . . . . 2:163
Manager . . . . . . . . . . . . . . . . . . . . 2:165
SINE . . . . . . . . . . . . . . . . . . . . . . . . . . . A:18
SQRT . . . . . . . . . . . . . . . . . . . . . . . . . . A:21
STATE . . . . . . . . . . . . . . . . . . . . . . . . 2:182
STRING . . . . . . . . . . . . . . . . . . . . . . . . A:38
SUBSTRING . . . . . . . . . . . . . . . . . . . . A:39
SUBTRACT . . . . . . . . . . . . . . . . . . . . . A:13

T
TANGENT . . . . . . . . . . . . . . . . . . . . . .
Text functions . . . . . . . . . . . . . . . . . . . .
Text operator . . . . . . . . . . . . . . . . . . . .
TRIM . . . . . . . . . . . . . . . . . . . . . . . . . .

A:18
A:32
A:31
A:39

Packet
Add . . . . . . . . . . . . . . . . . . . . . . . . . . 3:8
Remove . . . . . . . . . . . . . . . . . . . . . . 3:9
PART . . . . . . . . . . . . . . . . . . . . . . . . . . A:35
Pick . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:59
Filtering . . . . . . . . . . . . . . . . . . . . . . 3:59
Pick Data . . . . . . . . . . . . . . . . . . . . . . . . 3:63
Pick Packet . . . . . . . . . . . . . . . . . . . . . . 3:30
Pick Sequence . . . . . . . . . . . . . . . . . . . . 3:5
Pick Type . . . . . . . . . . . . . . . . . . . . . . . 3:56
Picked Position Data . . . . . . . . . . . . . . . 3:64
PLATFORMGRID . . . . . . . . . . . . . . . . 2:125
PMLSECURELOGIN . . . . . . . . . . . . . 2:130
PMLUSERLOGIN . . . . . . . . . . . . . . . . 2:131
Positions
comparing . . . . . . . . . . . . . . . . . . . . A:27
POWER . . . . . . . . . . . . . . . . . . . . . . . . A:21

UNDEFINED . . . . . . . . . . . . . . . . . . . . . A:7
Undefined values
in expressions . . . . . . . . . . . . . . . . A:42
Units
in expressions . . . . . . . . . . . . . . . . A:41
UNSET . . . . . . . . . . . . . . . . . . . . . . . . . A:10
Unset values
in expressions . . . . . . . . . . . . . . . . A:43
US format distances . . . . . . . . . . . . . . . A:33

V
VERIFY . . . . . . . . . . . . . . . . . . . . . . . 2:196
View
the Stack . . . . . . . . . . . . . . . . . . . . 3:10
VIEW Gadget

Index page iii

12 Series

Software Customisation Reference Manual

AREA View . . . . . . . . . . . . . . . . . . 2:199


PLOT View . . . . . . . . . . . . . . . . . . 2:201
VOLUME Views . . . . . . . . . . . . . . 2:203
View Gadget
ALPHA Views . . . . . . . . . . . . . . . . 2:198
ViewFinder . . . . . . . . . . . . . . . . . . . . . 2:196
VLOGICAL . . . . . . . . . . . . . . . . . . . . . . A:11
VTEXT . . . . . . . . . . . . . . . . . . . . . . . . . A:40
VVALUE . . . . . . . . . . . . . . . . . . . . . . . . A:21

W
WRT . . . . . . . . . . . . . . . . . . . . . . . . . . . A:23

Index page iv

12 Series