Software Customisation Reference Manual
Software Customisation Reference Manual
Reference Manual
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.
Revision Sheet
Date
Version
Comments / Remarks
January 2012
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
2:11
2:12
2:21
2:25
2:26
2:28
2:28
12 Series
ii
12 Series
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:132
2:133
2:134
2:136
2:141
2:142
2:144
2:153
2:155
2:160
2:163
2:165
2:167
2:170
2:173
2:175
2:177
2:184
2:184
2:186
2:187
2:190
2:192
2:194
2:195
2:197
2:198
2:198
2:200
2:201
2:203
2:205
2:208
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:1
Scope
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:2
Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:2
iii
12 Series
Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:4
Event Driven Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Picking
..............................................................
Pick Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Event Packet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Event Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3:4
3:4
3:5
3:5
3:5
3:31
3:52
3:54
3:56
3:59
3:60
3:61
3:61
3:63
iv
12 Series
A:12
A:13
A:13
A:13
A:14
A:22
A:23
A:23
A:25
A:27
A:28
A:29
A:30
12 Series
vi
12 Series
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 Outfitting; 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.
1:1
12 Series
1:2
12 Series
2.1
Object Classification
The table below lists the object types and shows which classifications they belong to.
Classification
Object Type
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
Classification
Object Type
Outfitting Objects
BANNER
BORE
DB
DBREF
DBSESS
DIRECTION
MACRO
MDB
ORIENTATION
POSITION
POSTUNDO
PROJECT
SESSION
TEAM
UNDOABLE
USER
ALERT
BAR
BUTTON
COMBOBOX
CONTAINER
FMSYS
FORM
FRAME
LINE
LIST
MENU
NUMERIC
OPTION
PARAGRAPH
RTOGGLE
SELECTOR
2:2
12 Series
Classification
Object Type
SLIDER
TEXT
TEXTPANE
TOGGLE
VIEW
ALPHA
AREA
PLOT
VOLUME
COLLECTION
COLUMN
COLUMN-FORMAT
DATE-FORMAT
EXPRESSION
REPORT
TABLE
FORMAT
Formatting Text
Table 2: 1.
2.2
Result
Purpose
Attribute( 'Name')
ANY
Attributes()
Delete()
EQ(any)
BOOLEAN
Type-dependent comparison
LT(any)
BOOLEAN
Type-dependent comparison
(converting first to STRING if
all else fails)
2:3
12 Series
Name
Result
Purpose
Max(any)
ANY
Min(any)
ANY
NEQ(any)
BOOLEAN
ObjectType()
STRING
Set()
BOOLEAN
String()
STRING
Convert the
STRING
Unset()
BOOLEAN
Name
Type
Purpose
visible
BOOLEAN
Table 2: 2.
object
to
2.3
2.3.1
Get/Set
active
Get/Set
2:4
12 Series
Name
Type
Purpose
callback
STRING
Get/Set
STRING
tag
Get/Set
Table 2: 3.
2.3.2
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
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
2.4
2.4.1
2:6
12 Series
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
2.4.3
2:7
12 Series
2.4.4
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.
AT 5 7.5
AT X 5.5
AT YMAX+1
2:8
12 Series
2.4.5
AT XMIN.GAD1-2
YMAX.GAD2+1
2:9
12 Series
2.4.6
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
2:10
12 Series
2.5
2.5.1
ALERT Object
Methods
Name
Result
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
Message(Message is STRING, X is
REAL, Y is REAL)
STRING
YES
Question(Message is STRING, X is
REAL, Y is REAL )
STRING
YES, NO
OR
CANCEL
Warning(Message is STRING, X is
REAL, Y is REAL)
STRING
YES
2:11
Purpose
12 Series
Name
Result
Purpose
!!Alert.Input( ! prompt is
STRING, !default is STRING) is
STRING
STRING
!!Alert.Input( !prompt is
STRING, !default is STRING, xPos
is REAL, yPos is REAL) is STRING
STRING
Name
Type
Purpose
Orientation
ORIENTATI
ON
Get/Set
Position
POSITION
Get/Set
Radius
REAL
Get/Set
StartAngle
REAL
Get/Set
EndAngle
REAL
Get/Set
Sense
BOOLEAN
Get/Set
Arc sense:
Table 2: 5.
2.5.2
ARC Object
Basic ARC Definition: Members
Table 2: 6.
0 for clockwise
1 for anti-clockwise
2:12
12 Series
Result
Purpose
ARC
String()
STRING
Table 2: 7.
2:13
12 Series
Result
Purpose
StartPosition(POSITION)
ARC
EndPosition(POSITION)
ARC
Through(POSITION)
ARC
ChordHeight(REAL)
ARC
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
Circle(BOOLEAN)
ARC
Complement()
ARC
Table 2: 8.
2:14
12 Series
EndPosition(POSITION)
Through(POSITION)
Complement()
Cord(REAL)
CordHeight(REAL)
StartPosition(POSITION)
Figure 2:8.
Result
AnglePosition(REAL)
Table 2: 9.
Purpose
AnglePosition(REAL)
Figure 2:9.
2:15
12 Series
Result
AngleDirection(REAL)
StartTangent()
EndTangent()
AngleTangent(REAL)
DIRECTION Returns
tangential
passed.
Table 2: 10.
Purpose
the
direction,
to the angle
AngleDirection(REAL)
EndTangent()
AngleTangent(REAL)
StartTangent()
Result
Purpose
XYOffset(POSITION)
XYPOSITI
ON
Figure 2:11.
2:16
12 Series
XYOffset(POSITION)
Figure 2:12. XYOffsets Returned from ARC Methods
Result
Purpose
Proportion(REAL)
REAL
Angle()
REAL
Near(POSITION)
REAL
Table 2: 11.
Near(POSITION)
Proportion(REAL)
2:17
12 Series
Name
Result
Purpose
Chord()
REAL
Length()
REAL
ChordHeight()
REAL
Table 2: 12.
Chord()
Length()
ChordHeight()
Figure 2:14. REALs Returned by ARC Methods (b)
Result
Purpose
Intersections(LINE)
REAL
ARRAY
Intersections(PLANE)
REAL
ARRAY
2:18
12 Series
Name
Result
Purpose
Intersections(ARC)
REAL
ARRAY
Table 2: 13.
Intersections(LINE)
Intersections(PLANE)
Intersections(ARC)
Figure 2:15. REAL ARRAYs Returned by ARC Intersection Methods
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:19
12 Series
Name
Result
Purpose
Split()
REAL
ARRAY
Pole()
POSITION
Table 2: 14.
Tangents(POSITION)
Tangents(ARC)
Figure 2:16. REAL ARRAYs Returned from ARC Tangent Methods
Result
Purpose
On(POSITION)
BOOLEAN
OnProjected(POSITION)
BOOLEAN
OnExtended(POSITION)
BOOLEAN
Table 2: 15.
2:20
12 Series
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)
AppendArray(ARRAY values)
Clear()
Compress()
NO RESULT Removed
all
undefined
elements
and
re-index
remaining elements.
ARRAY
ARRAY
2:21
12 Series
Name
Result
Purpose
ARRAY
DeleteTo(REAL index)
ARRAY
Difference(ARRAY two)
ARRAY
Empty()
BOOLEAN
Evaluate(BLOCK command)
NEW
ARRAY
Find(ANY value)
NEW
ARRAY
FindFirst(ANY value)
REAL
Return
index
of
first
occurrence of value. Returns
UNSET if not found.
First()
ANY
ARRAY
From(REAL index)
ARRAY
GetIndexed(REAL index)
ANY
Implements ARRAY[index]
(this is an internal method).
Indices()
NEW
ARRAY
2:22
a
are
new
re-
12 Series
Name
Result
Purpose
NO RESULT Insert
values
as
new
elements with the first at
index.
Later elements
indexed
are
re-
Intersect(ARRAY two)
NEW
ARRAY
Invert()
NEW
ARRAY
Last()
ANY
MaxIndex()
REAL
MinIndex()
REAL
NEW
ARRAY
NO RESULT Apply
result
of
SORTEDINDICES to reorder array elements into
positions
specified
by
indices.
Remove(REAL nth)
ANY
ANY
RemoveFirst()
NEW
ARRAY
2:23
12 Series
Name
Result
Purpose
RemoveFrom(REAL index)
NEW
ARRAY
ANY
RemoveLast()
NEW
ARRAY
NEW
ARRAY
RemoveTo(REAL index)
Size()
REAL
of
Sort()
SortUnique()
NEW
ARRAY
SortedIndices()
ARRAY
To(REAL index)
ARRAY
Union(ARRAY two)
NEW
ARRAY
2:24
12 Series
Name
Result
Unique()
Width()
REAL
Name
Type
Purpose
Company
STRING
Copyright
STRING
AVEVA copyright, up to 80
characters.
Libraries
Name
STRING
Short
STRING
Status
STRING
Table 2: 16.
2.5.4
Purpose
BANNER Object
Members
Table 2: 17.
Command
!BANNVAR = BANNER!
2:25
12 Series
2.5.5
BAR Gadget
Methods
Name
Result
Purpose
Clear()
Clear(STRING
dText)
Using this
deprecated.
BOOLEAN
FieldProperty(STRING field,
STRING property)
method
is
FullName()
STRING
InsertBefore(STRING field,
STRING dText, STRING menu)
STRING
Owner()
FORM
2:26
12 Series
Name
Result
Purpose
NO RESULT Deactivate/Activate
the
menu field whose DTEXT is
dText.
Using this
deprecated.
SetFieldProperty(STRING menu,
STRING property, BOOLEAN state)
method
is
Shown()
BOOLEAN
Type()
STRING
Table 2: 18.
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:27
12 Series
2.5.6
BLOCK Object
This object holds expressions that are evaluated later.
Methods
Name
Result
Purpose
BLOCK
Evaluate()
ANY
Evaluate()
ANY
Evaluate(STRING type)
ANY
Table 2: 19.
2.5.7
BOOLEAN Object
Methods
None of these methods modifies the original object.
Name
Result
Purpose
BOOLEAN(REAL value)
BOOLEAN
BOOLEAN(STRING value)
BOOLEAN
BOOLEAN
As
above.
FORMAT
argument
required
for
consistency by Forms and
Menus.
AND()
BOOLEAN
NOT()
BOOLEAN
OR(BOOLEAN value)
BOOLEAN
2:28
12 Series
Name
Result
Purpose
Real()
REAL
1 if boolean is TRUE; 0 if
boolean is FALSE
String()
STRING
Table 2: 20.
2.5.8
BORE Object
Member
Name
Type
Purpose
Size
REAL
Get/Set
Table 2: 21.
Methods
None of these methods modifies the original object.
Name
Result
Purpose
BORE(REAL value)
BOOLEAN
BORE(STRING value)
BOOLEAN
BOOLEAN
EQ(REAL value)
BOOLEAN
Comparison
with
the
argument value dependent
on current BORE units.
GEQ(BORE bore)
BOOLEAN
GEQ(REAL value)
BOOLEAN
Comparison
with
the
argument value dependent
on current BORE units.
GT(BORE bore)
BOOLEAN
2:29
12 Series
Name
Result
Purpose
GT(REAL value)
BOOLEAN
Comparison
with
the
argument value dependent
on current BORE units
LEQ(BORE bore)
BOOLEAN
LEQ(REAL value)
BOOLEAN
Comparison
with
the
argument value dependent
on current BORE units
LT(BORE bore)
BOOLEAN
LT(REAL value)
BOOLEAN
Comparison
with
the
argument value dependent
on current BORE units
Real()
REAL
String(FORMAT format)
STRING
Name
Type
Purpose
Background
REAL
Set/Get
Background
STRING
Set Only
Set
Background
Name
Val
BOOLEAN
2.5.9
BUTTON Gadget
Members
Table 2: 22.
Colour
2:30
12 Series
Methods
Name
Result
Purpose
FullName()
STRING
Name()
STRING
Owner()
FORM
SetPopup(MENU menu)
RemovePopup(MENU menu)
GetPickedPopup()
MENU
Shown()
BOOLEAN
SetFocus()
Refresh()
Background()
STRING
Get
Background
Name.
Colour
Type()
STRING
Table 2: 23.
2:31
12 Series
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:32
12 Series
.--------<-------.
/
|
>-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 -.
'----------------'-->
Note: It is bad practice to place one gadget on top of another. This may lead to gadgets
being obscured.
Defaults:
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:33
12 Series
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()
Scope (COLLECTION)
Scope (DBREF)
AddScope
ClearScope()
Filter (EXPRESSION)
ClearFilter ()
Type (STRING)
2:34
be
12 Series
Name
Purpose
AddType(STRING)
ClearTypes()
Initialise()
Filter()
EXPRESSI
ON
Scope()
DBREF
ARRAY
Types()
STRING
ARRAY
Results()
DBREF
ARRAY
Next(REAL n)
DBREF
ARRAY
Index()
REAL
Size ()
REAL
Table 2: 24.
2.5.11
Result
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:35
12 Series
Methods
Name
Purpose
Column()
Column(EXPRESSION, BOOLEAN,
BOOLEAN, STRING)
Constructor
setting
Expression, Sort, Ascending,
Key
Key (STRING)
Expression (EXPRESSION)
Sort()
NoSort()
Ascending()
Sets
column
ascending order
sort
to
Descending()
Sets
column
sort
descending order
to
Key()
STRING
Expression()
EXPRESSI
ON
IsSorted()
BOOLEAN
SortType()
STRING
Table 2: 25.
2.5.12
Result
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:36
12 Series
Methods
Name
Result
Purpose
ColumnFormat()
Format(FORMAT)
Format(DATEFORMAT)
FORMAT('STRING')
Width (REAL)
Widest()
Indent(REAL, REAL)
Format()
FORMAT
Width()
REAL
GetWidest()
BOOLEAN
Justification()
STRING
Returns
the
justification
LeftIndent()
REAL
RightIndent()
REAL
Returns
setting
Table 2: 26.
the
right
column
indent
2:37
12 Series
2.5.13
COMBOBOX Gadget
Members
Name
Type
Val
REAL
Set
DText
DText[n]
RText
RText[n]
Editable
BOOLEAN
Get/Set
Scroll
INTEGER
Get/Set
Count
REAL
Get only
Val
REAL
Get/Set
Table 2: 27.
Purpose
Get/ Selected option number.
list
of
COMBOBOX GadgetMembers
2:38
12 Series
Methods
Name
Result
Purpose
Add(STRING Dtext)
Clear()
ClearSelection()
FullName()
STRING
Name()
STRING
Owner()
FORM
Selection()
STRING
Get
current
RTEXT.
Selection(STRING text )
STRING
selections
the
gadget
is
SetPopup(MENU menu)
Refresh()
NOT
RESULT
SetFocus()
RemovePopup(MENU menu)
2:39
menu
12 Series
Name
Result
Purpose
GetPickedPopup()
MENU
Shown()
BOOLEAN
Type()
STRING
Background()
STRING
Get
Background
Name.
Colour
STRING
SetPopup(
!menu )
Clear( !dtext )
Clear( !fieldNumber )
Table 2: 28.
COMBOBOX GadgetMethods
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:40
12 Series
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:41
12 Series
2.5.14
CONTAINER Gadget
Members
Member Name
Type
Purpose
type
STRING Get/Set
control
REAL Get/Set
popup
MENU Get/Set
Methods
Method Name
Result
Purpose
ShowPopup(!x is
REAL, !y is REAL )
NO RESULT
FullName( )
STRING
Name( )
STRING
Owner( )
FORM
GetPickedPopup( )
MENU
Shown( )
BOOLEAN
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:42
12 Series
+-- <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.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:43
12 Series
Methods
Name
Result
Purpose
Constructor. Defines a format.
DateFormat(STRING format)
Month(STRING)
Year(INT)
String(DATETIME)
STRING
String(STRING)
STRING
Table 2: 29.
2.5.16
DATETIME Object
Methods
Name
Result
Purpose
DateTime()
DATETIME
DATETIME
DateTime(REAL year,
STRING month.
REAL date)
DATETIME
2:44
12 Series
Name
Result
Purpose
DATETIME
DateTime(REAL year,
STRING month, REAL date, REAL
hour, REAL minute)
DATETIME
DATETIME
DATETIME
Date()
REAL
GEQ(DATETIME)
BOOLEAN
GT(DATETIME)
BOOLEAN
HOUR()
REAL
LEQ(DATETIME)
BOOLEAN
LT(DATETIME)
BOOLEAN
Minute()
REAL
Month()
REAL
MonthString()
STRING
2:45
12 Series
Name
Result
Purpose
Second()
REAL
Year()
REAL
Name
Type
Purpose
Name
STRING
Description
STRING
Access
STRING
Access
type
(UPDATE,
MULTIWRITE,
CONTROLLED).
Claim
STRING
File
STRING
Database filename, up to 17
characters.
Foreign
STRING
FOREIGN or LOCAL
Number
STRING
Database number
Team
TEAM
Owning Team
Type
STRING
Refno
STRING
Primary
STRING
Identifies
whether
a
database is PRIMARY or
SECONDARY at the current
location in a global project
Table 2: 30.
2.5.17
DB Object
Members
Table 2: 31.
DB Object Members
2:46
12 Series
Methods
Name
Result
Purpose
MDBList()
ARRAY
Size()
REAL
Sessions()
Lastsession()
DBSESS
DB(DBREF)
DB
DB(STRING)
DB
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
2:47
12 Series
2.5.18
DBREF Object
Methods
Name
Result
Purpose
Dbref( STRING )
DBREF
DBREF
As
above.
FORMAT
argument
required
for
consistency by Forms and
Menus.
Attribute(STRING Name)
ANY
Attributes()
BadRef()
BOOLEAN
Delete()
MCount()
REAL
MCount(STRING type)
REAL
String(FORMAT)
STRING
Line([CUT/UNCUT])
LINE
PPosition(REAL)
POSITION
PDirection(REAL)
Table 2: 33.
DB Object Methods
2:48
12 Series
2.5.19
DBSESS Object
Members
Name
Result
Purpose
Number
REAL
Session number
Date
STRING
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
Table 2: 34.
2.5.20
DIRECTION Object
Members
Table 2: 35.
Methods
None of these methods modifies the original object.
Name
Result
Direction( STRING )
EQ(DIRECTION)
BOOLEAN
2:49
Purpose
12 Series
Name
Result
Purpose
LT(DIRECTION)
BOOLEAN
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)
Cross(DIRECTION)
Dot(DIRECTION)
REAL
IsParallel(DIRECTION)
BOOLEAN
IsParallel(DIRECTION, REAL)
BOOLEAN
Opposite()
DIRECTION Returns
direction
Orthogonal(DIRECTION)
DIRECTION Returns
the
direction
orthogonal between the two
directions
Projected(PLANE)
IsPerpendicular(DIRECTION)
BOOLEAN
IsPerpendicular(DIRECTION, REAL)
BOOLEAN
Table 2: 36.
the
opposite
2:50
12 Series
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
Expression (STRING)
AttributeExpression (STRING)
String()
STRING
Returns
the
current
expression as a string.
Evaluate(DBREF)
ANY
Evaluates
the
current
expression
against
the
passed object
Table 2: 37.
2:51
12 Series
2.5.22
FILE Object
Methods
Name
Result
Purpose
File(STRING)
FILE
AccessMode()
STRING
Close()
Copy(STRING)
FILE
Copy(FILE)
FILE
DeleteFile()
Directory()
FILE
DTM()
DATETIME
Entry()
STRING
Exists()
BOOLEAN
Returns BOOLEAN
indicating whether file exists
or not.
Files()
FullName()
STRING
IsOpen()
BOOLEAN
2:52
12 Series
Name
Result
Purpose
LineNumber()
REAL
Move(STRING)
FILE
Move(FILE)
FILE
Name()
STRING
Open(STRING)
Owner()
STRING
Path()
PathName()
STRING
ReadFile()
ReadFile(REAL)
ReadRecord()
STRING
Set()
BOOLEAN
Returns
a
BOOLEAN
indicating whether this FILE
object has a name set or not.
Size()
REAL
SubDirs()
2:53
12 Series
Name
Result
Purpose
Type()
STRING
WriteFile(STRING, ARRAY OF
STRING)
WriteRecord(STRING)
Table 2: 38.
2.5.23
FMSYS Object
Methods
None of these methods modifies the original object.
Name
Result
Purpose
Checkrefs
BOOLEAN
CurrentDocument()
FORM
2:54
12 Series
Name
Result
Purpose
DefaultFormat()
FORMAT
DefaultFormLayout( )
STRING
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()
HelpFileAlias()
STRING
Interrupt()
BOOLEAN
LoadForm(STRING formname)
FORM
Main()
FORM
OKCurfnView(!viewtype is STRING)
BOOLEAN
2:55
12 Series
Name
Result
Purpose
OKCurfnView(!viewtype is STRING,
subtype is STRING )
BOOLEAN
Progress( )
REAL
Refresh()
SetDefaultFormat(!!fmt is
FORMAT)
SetDefaultFormLayout ( STRING
)
NONE
SetHelpFileAlias (alias is
string)
NONE
SetInterrupt(GADGET)
SetMain(FORM)
FORM
SetProgress( !percent)
Splashscreen(BOOLEAN)
Table 2: 39.
2:56
12 Series
2.5.24
FORM Object
Members
Name
Type
FormRevision
FormTitle
IconTitle
Initcall
Autocall
Okcall
Cancelcall
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
2:57
Purpose
12 Series
Name
Type
Purpose
Quitcall
Maximised
BOOLEAN
Get/Set
Active
BOOLEAN
Get Only
Popup
MENU
Get/Set
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:58
12 Series
Name
Type
Purpose
Killingcall
STRING
Get/Set
STRING
FirstShowncall
Get/Set
Table 2: 40.
Methods
Name
Result
Purpose
Name()
STRING
Get name.
FullName()
STRING
NewMenu(STRING menuname)
MENU
MENU
SetActive(BOOLEAN)
2:59
form
name
12 Series
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)
RemovePopup(MENU)
GetPickedPopup()
MENU
Show('FREE')
Shown()
BOOLEAN
Hide()
Owner()
FORM
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
2:60
Purpose
12 Series
Name
Result
SetUndoable( )
STRING,
ANY
Undoable( )
STRING
Table 2: 41.
Purpose
2:61
12 Series
that allows users to change the default layout mode for Setup form. This can be used to help
test any existing appware which is using setup form !!formname . . ., in either mode to
determine which forms need layout adjustment.
NOALIGN
The gadgets BUTTON, TOGGLE, TEXT, OPTION, single line PARGRAPH fit within 1
vertical grid unit and are by default drawn with their Y-coordinate adjusted so that they would
approximately centre-align with an adjacent BUTTON. This pseudo-alignment introduces
small errors in all but a few circumstances and prevents accurate controlled layout.
NOALIGN prevents this (historical) gadget auto-alignment.
Use NOALIGN in conjunction with PATH RIGHT (the default path) and HALIGN CENTRE,
as it gives a better layout, with fewer surprises.
Note: It is bad practice to place one gadget on top of another. This may lead to gadgets
being obscured.
The commands to set modifiable attributes are described after the syntax graph.
.---------------<---------------------------.
/
|
>--SETUP FORM fname --+-- MAIN -----+-------------------------------|
+-- DOCUMENT -+- FLOAT -----------------------|
|
-------------------------------|
+-- DIALOG ---+- DOCKing -+-------------------|
|
|- Left ---.
|
|
|
|- Right --|
|
|
|
|- Top ----|
|
|
|
- Bottom ---------|
|
|- RESIzeable ------------------|
|
-------------------------------|
+-- BLOCKingdialog -+- RESIzeable ------------|
|
-------------------------|
+-- VARCHARS ---------------------------------|
+-- FIXCHARS ---------------------------------|
+-- AT <xypos> -------------------------------|
+-- SIZE val val -----------------------------|
+-- NOQUIT -----------------------------------|
+-- NOALIGN ----------------------------------|
+-- CORE -------------------------------------*
| .---<------.
|/
|
+-- <form> --*
form contents
EXIT -->
Default:
2:62
12 Series
TITLE
Defines the form title.
>-- CURSortype
--+-+-+-+--
POINTER ----.
NOCURSOR ---|
PICK -------|
PICKPLUS ---|
-- CROSSHAIR ---->
Note: There are other cursor types that are for AVEVAs use only.
ICONTITLE
Defines the title for the icon when the form is minimised.
2:63
12 Series
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.
Defaults:
Path right, Hdist 1.0, Valign top, Vdist 0.25, Halign left
HALIGN
Works in conjunction with PATH and HDISTANCE. Defines how a newly added gadget
should be aligned horizontally with the preceding gadget.
HDISTANCE
Works in conjunction with PATH and HALIGN. Defines how a newly added gadget should be
spaced horizontally with respect to the preceding gadget.
2:64
12 Series
VALIGN
Use in conjunction with PATH and VDISTANCE. Defines how a newly added gadget should
be aligned vertically with the preceding gadget.
VDISTANCE
Works in conjunction with PATH and VALIGN. Defines how a newly added gadget should be
spaced vertically with respect to the preceding gadget.
the form, its gadgets, methods and layout are specified (usually in a
'.pmlfrm' file)
Load
the form definition is read by PML and the form's constructor method is
run
Show
the form's INITialisation event is raised, and the display process is begun
Activate
the form and its contents is created by the window management system
and is activated (actually displayed) and the FIRSTSHOWN event is
raised
Hide
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
2:65
12 Series
!this.FirstShownCall = '!this.<form_method>'
The purpose is to allow the user to carry out any form actions which can only be completed
when the form is actually displayed. There are a variety of circumstances where this arises
and it is often difficult to find a reliable solution. A couple of examples are given below.
Commands which manipulate form, menu or gadget visual properties, executed from a PML
macro, function or callback may not happen until control is returned to the window
manager's event loop. For example, in the application's start-up macro the command
sequence show !!myForm hide !!myform will result in the form not being displayed, but
also not becoming known at all to the window manager. Attempts to communicate with this
form via the External callback mechanism (possibly from another process) will not work.
This can be rectified by doing the '!this.hide()' within the FIRSTSHOWN callback, because
the form will be guaranteed to be actually displayed (and hence known to the window
manager), before it is hidden.
It is sometimes difficult to achieve the correct gadget background colour setting the first time
the form is displayed. This can be resolved by setting the required colour in the
FIRSTSHOWN callback.
KILLING callback
Typically assigned in the Constructor by
!this.KillingCall = '!this.<form_method>'
The purpose is to notify the form that it is being destroyed and allow the assigned callback
method to destroy any associated resources, e.g. global PML objects which would
otherwise not be destroyed. This may be necessary because PML global objects will survive
an application module switch, but may not be valid in the new module.
Notes:
1. The callback method MUST NOT carry out any modifications to the Gadgets belonging
to the form or to the Form itself (e.g. don't show or hide the form). Attempts to edit the
form or its gadgets may cause unwanted side effects or possible system errors.
2. Form callbacks designed for other Form events (e.g. CANCEL, INIT) are rarely suitable
as killing callbacks.
3. Restrict form and gadget operations to querying.
2.5.25
FORMAT Object
The format object is used to format the output of real objects and especially real physical
objects such as distances. It controls precision, units, conversions and unit qualifiers.
Format objects are also used to control conversions of strings to reals by providing guidance
on dimensions and units. This occurs for text boxes in the user interface, and also for real to
string and string to real conversion methods.
2:66
12 Series
Members
Name
Type
Purpose
CompSeparator
STRING | |
Separator
used
for
multicomponent data types such as
POSITIONS (Default SPACE).
Denominator
REAL 32
Dimension
STRING
NONE
Number
(Default)
Number is a LENGTH
L2
Number is an AREA
L3
Number is a VOLUME
is
un-dimensioned
REAL 2
ENU
BOOLEAN
TRUE
FALSE
BOOLEAN
FALSE
TRUE
STRING ||
Fraction
FtLabel
(Default )
InchSeparator
STRING |.|
2:67
12 Series
Name
Type
Purpose
Label
STRING
|mm|
PadFractions
BOOLEAN
FALSE
TRUE
TrailZeros
BOOLEAN
2:68
12 Series
Name
Type
Purpose
Units
STRING
MM
Output number
(Default)
FINCH
INCH
in
millimetres
Zeros
BLOCK
||
|/*|
|CE|
BOOLEAN
TRUE
FALSE
Table 2: 42.
2:69
12 Series
2.5.26
FRAME Gadget
Members
Name
Type
Purpose
Tag
STRING
Get/Set
Val
REAL
Set
RGroupCount
REAL
only
Callback
STRING
Get/Set
Expanded
BOOLEAN
Get/Set
FoldUpPanels
status
Name
Result
Purpose
GADGET
Returns
the
RTOGGLE
gadget with index !index.
Background()
STRING
Get
Background
Name.
Table 2: 43.
expanded
Methods
Colour
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:70
12 Series
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.
.---<-------.
/
|
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:71
12 Series
<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
<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:72
12 Series
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:73
12 Series
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 Model Editor mode, then only those database elements defined in the Model Editor
definition are significant, and some non-database elements.
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()
Result
Purpose
.scope(DBREF)
BOOLEAN
.add(DBREF)
DBREF
2:74
of the
the top
selected
beneath.
12 Series
.addConnected(DBREF)
ARRAY
.addBranchLeg(DBREF)
ARRAY
.addAttached(DBREF)
ARRAY
.addOffspring(DBREF)
ARRAY
.remove(DBREF)
No Result
Remove
highest
significant
parent of passed element from
selection
.clear()
No Result
.getCurrent()
No Result
.getAll()
No Result
.setCurrent()
No Result
Set
the
current
graphical
selection set to be the same as
the contents of the selection set
2:75
12 Series
Query Methods
Name
Result
Purpose
.isValid()
BOOLEAN
.selected(DBREF)
DBREF
.isSelectable(DBREF)
BOOLEAN
.isModifiable(DBREF)
BOOLEAN
.inSelection(DBREF)
BOOLEAN
.ancestors(DBREF)
ARRAY
DBREFs
.getSelection()
ARRAY
DBREFs
Table 2: 45.
2.5.28
IDList
The IDList object provides features for the accessing and manipulation of elements in an
IDLIST database element.
Elements in the IDlist object must be significant elements, in the following sense. The
database element reference supplied to the constructor is examined to see if it either:
Owns a valid design drawlist element; in which case the supplied element is added to
the idlist object.
Is owned by a drawlist element, in which case the significant owner is added to the
idlist.
Elements below the level of the design drawlist element cannot be manipulated via this
object.
2:76
12 Series
Set-up Methods
Name
Purpose
.idlist(DBREF)
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
.add (SELECTION)
No Result
.remove (DBREF)
No Result
.remove (SELECTION)
No Result
.copy(IDLIST other)
BOOLEAN
.clear()
No Result
.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.
2:77
12 Series
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:78
12 Series
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
EndPosition
POSITION
Get/Set
Table 2: 47.
Definition Methods
None of these methods modifies the original object.
Name
Result
Purpose
LINE
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
2:79
12 Series
EndPosition
Direction(DIRECTION)
StartPosition
Result
Purpose
On(POSITION where)
BOOLEAN
BOOLEAN
OnProjected(POSITION where)
BOOLEAN
OnProjected(POSITION) 9
On (POSITION) 9
2:80
12 Series
Result
Purpose
Intersection(LINE other)
POSITION
Intersection(POINT point,
VECTOR vector)
POSITION
Intersection(PLANE plane)
LINE
Intersections(ARC arc)
Near(POSITION position)
POSITION
Proportion(REAL proportion)
POSITION
Table 2: 49.
Proportion(REAL)
Intersection(LINE)
Near(POSITION)
2:81
12 Series
Result
Purpose
Length()
REAL
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)
Result
Purpose
Plane()
PLANE
Pointvector()
POINTVEC
TOR
Returns a POINTVECTOR
object,
using
the
StartPosition and Direction
of line object
2:82
12 Series
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
From(POSITION position)
LINE
To(POSITION position)
LINE
ExtendStart(REAL distance)
LINE
ExtendEnd(REAL distance)
LINE
Table 2: 50.
2:83
12 Series
ExtendEnd(REAL)
To(POSITION)
SetLengthStart(REAL)
ExtendStart(REAL)
Towards(POSITION)
SetLengthEnd(REAL)
From(POSITION)
Name
Result
Purpose
ExtendStart(PLANE plane)
LINE
ExtendEnd(PLANE plane)
LINE
ReverseSense()
LINE
Projected(PLANE plane)
LINE
Parallel(POSITION position)
LINE
LINE
2:84
12 Series
Parallel(POSITION)
Offset(DIRECTION, REAL)
Projected(PLANE)
Name
Result
Purpose
Overlap(LINE other)
LINE
Union(LINE other)
LINE
Table 2: 51.
Union(Line)
Overlap(Line)
Figure 2:30. LINEs Returned by LINE Object Methods (c)
2:85
12 Series
Name
Type
Purpose
Position
POSITION
Get/Set
Orientation
ORIENTATI
ON Get/Set
XSpacing
REAL
Get/Set
YSpacing
REAL
Get/Set
Table 2: 52.
Definition Methods
These methods do not modify the original object.
Name
Result
Lineargrid( POSITION,
ORIENTATION, REAL, REAL)
String()
STRING
Table 2: 53.
Purpose
Orientation
YSpacing
Z
Y
Position
X
XSpacing
Figure 2:31. LINEARGRID Basic Definition
2:86
12 Series
Result
Purpose
GridPoint(REAL, REAL)
POSITION
Snap(POSITION)
POSITION
Snap(LINE)
POSITION
Snap(POINTVECTOR)
POSITION
SnaptoCentre(POSITION)
POSITION
SnaptoCentre(LINE)
POSITION
SnaptoCentre(POINTVECTOR)
POSITION
Table 2: 54.
2:87
12 Series
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
Table 2: 55.
Within(POSITION)
Plane()
Within(POSITION)
Figure 2:33. Miscellaneous Return Values from LINEARGRID Methods
2:88
12 Series
Result
XYOffset(POSITION)
Table 2: 56.
Purpose
XYOffset(POSITION)
Figure 2:34. XYOffsets Returned by LINEARGRID Object Methods
2:89
12 Series
2.5.32
LIST Gadget
Members
Name
Type
Purpose
Val
REAL Get/Set
Selected field-number
single-choice list.
Val
DText
STRING
Set or get the entire list of
ARRAY Get/Set display texts.
DText[n]
STRING
Only
PickedField
RText
STRING
Set or get the
ARRAY Get/Set replacement texts.
RText[n]
STRING
Only
Count
REAL
Get only
val
REAL
Get/Set
Table 2: 57.
of
of
2:90
12 Series
Methods
Name
Result
Purpose
Add(STRING Dtext)
NO RESULT
NO RESULT
FullName()
STRING
Name()
STRING
Owner()
FORM
NO RESULT
NO RESULT
Selection( )
Selection(STRING text)
Clear()
NO RESULT
Clear
list
selections.
ClearSelection()
NO RESULT
SetPopup(MENU
NO RESULT
NO RESULT
menu)
RemovePopup(MENU menu)
2:91
contents
and
12 Series
Name
Result
Purpose
GetPickedPopup()
MENU
Refresh()
NO RESULT
Shown()
BOOLEAN
Type()
STRING
SetToolTip(STRING)
NO RESULT
SetFocus()
NO RESULT
SetHeadings(!Dtexts is
STRING)
NONE
SetHeadings(!Dtexts is
ARRAY)
NONE
Clear( !dtext )
NO RESULT
Clear( !fieldNumber )
NO RESULT
Delete the
number.
SetRows(Array of (Array of
STRING))
NO RESULT
2:92
specified
field
12 Series
Name
Result
Purpose
SetColumns(Array of (Array
of STRING))
NO RESULT
NO RESULT
Background()
STRING
Table 2: 58.
Column Headings
The number of columns is deduced from the List's data. If the user specifies a set of (1 or
more) column headings before the list is populated, then this will determine the number of
columns. If no headings are pre-specified then the number of columns is deduced from the
display text (Dtext) of the List's first data field. This provides upwards compatibility for
existing Appware using single column lists.
A List gadget's headings can be replaced after the list has been populated. If the new
headings specify the same number of columns then the headings are replaced but the List's
data fields and selection remain unchanged. If the number of columns is different, then the
list is replaced by an empty list with the new headings.
Invoking the Clear() method will clear the list's data fields and rebuild the current headings.
There are two methods for defining a List's column headings:
The data fields can be set using the List's DTEXT member or its Add methods, where a
row's Dtext string can be a set of TAB separated column sub-strings for populating multiple
columns. Alternatively you can use the SetRows or SetColumns methods.
2:93
12 Series
2:94
12 Series
.-------<--------.
/
|
>- <flist> - LIST gname -+- <fgtagw> ------|
+- <fgpos> -------|
+- <fganch> ------|
+- <fgdock> ------|
+- CALLback text -|
+- TOOLTIP text --|
+- CORE ----------* Core managed gadget
|
+- MULTiple --------.
| .-------<-------. |
|/
| |
+- NORESELect ----| |
+- ZEROSELection -* |
-------------------- <vshap> +- TOOLTIP text -.
----------------->
Note: The TOOLTIP keyword can be given at two different places in the syntax.
Default:
2.5.33
LOCATION Object
Members
Name
Type
Purpose
Name
STRING
Location name.
Description
STRING
Description, up to 120
characters.
Locid
STRING
Location identifier.
Refno
STRING
STRING containing
Database reference no.
IsCurrent
BOOLEAN
Table 2: 59.
2:95
12 Series
Methods
Name
Result
Purpose
LOCATION(DBREF)
LOCATION
LOCATION(STRING)
LOCATION
Dblist()
ARRAY OF DB
Sessions()
ARRAY
SESSIONS
String()
STRING
Table 2: 60.
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:96
12 Series
2.5.34
MACRO Object
Member
Name
Type
Purpose
Filename
STRING
From
DB
Source DB of
connection macro.
Number
REAL
To
DB
Target DB of
connection macro.
Table 2: 61.
inter-DB
inter-DB
Command
!ARRAY = MACROS
2.5.35
MDB Object
Member
Name
Type
Purpose
Name
STRING
Description
STRING
Refno
STRING
2:97
12 Series
Methods
None of these methods modifies the original object.
Name
Result
Purpose
MDB(DBREF)
MDB
Returns an MDB
given a DBREF.
MDB(STRING)
MDB
Current()
Deferred()
Mode()
Table 2: 62.
object,
an
!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
2:98
12 Series
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
for
and
Hashcode()
Ptype()
STRING
currentunits()
UNIT
UnitQualifier()
STRING
UnitFactor()
REAL
Conversion
factor
to
database units from current
units.
Constructors
Table 2: 63.
Methods
2:99
12 Series
Name
Result
Purpose
SetUnits(unit)
BOOLEAN
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()
BOOLEAN
Suspend()
SuspendLevel()
REAL
Reinstate()
BOOLEAN
BOOLEAN
Unsuspend()
General Queries
IsNull()
BOOLEAN
IsStandard()
BOOLEAN
TRUE if dimension is a
named (standard) dimension.
FALSE if specified from
powers
of
its
base
components (i.e. Generic).
2:100
12 Series
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
2.5.37
MENU Object
Members
Name
Type
Purpose
Callback
STRING
Get/Set
STRING
PickedField
Get Only
STRING
PickedFieldName
Get Only
Table 2: 64.
2:101
12 Series
Methods
Name
Result
Purpose
Add('SEPARATOR', {STRING
fieldName})
2:102
12 Series
Name
Result
Purpose
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
FullName()
STRING
InsertAfter(STRING menuField,
CALLBACK, STRING Dtext, STRING
callback, {STRING fieldName})
2:103
12 Series
Name
Result
Purpose
InsertAfter(STRING menuField,
FORM, STRING Dtext, STRING
formName, {STRING fieldName})
InsertAfter(STRING menuField,
MENU, STRING Dtext, STRING
menuName, {STRING fieldName})
InsertAfter(STRING menuField,
TOGGLE, STRING Dtext, STRING
menuName, {STRING fieldName})
2:104
12 Series
Name
Result
Purpose
InsertAfter(STRING menuField,
SEPARATOR, {STRING fieldName})
InsertBefore(STRING menuField,
CALLBACK, STRING Dtext, STRING
callback, {STRING fieldName})
InsertBefore(STRING menuField,
FORM, STRING Dtext, STRING
formName, {STRING fieldName})
InsertBefore(STRING menuField,
MENU, STRING Dtext, STRING
menuName, {STRING fieldName})
2:105
12 Series
Name
Result
Purpose
InsertBefore(STRING menuField,
TOGGLE, STRING Dtext, STRING
menuName, {STRING fieldName})
InsertBefore(STRING menField,
SEPARATOR, {STRING fieldName})
Name()
STRING
Returns
menu
object's
simple name, for example:
'Menu'.
Owner()
FORM
PopupGadget()
GADGET
Refresh()
2:106
is
method
method
is
12 Series
Name
Result
Purpose
SetFieldProperty(STRING
menuField , STRING property,
BOOLEAN value)
method
is
Table 2: 65.
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:
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:107
12 Series
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 ----.
------------->
/
fmenu>-+- ADD -+++-
.-----<-----.
|
fieldname -|
CORE ------*
SEParator -------------------------------.
dtext -+- rtext -------------------------|
+- MENU -- gname -----------------|
+- FORM -- fname -----------------|
+- CALLback -+- rtext ------------|
|
--------------------|
- TOGgle -+- rtext -.
|
---------+- SELected -|
-------------->
2.5.38
Name
Returns
OwningDbBranch
DBREF
Returns
owner
branch element of
this route point.
OwningRoute
mdrRoute
Returns
mdrRoute
Arguments
2:108
Description
Remarks
12 Series
IsEqual
bool
ExpandToRoute
mdrRoute
mdrRoutePoint
Expands external
geometry
to
mdrRoute object.
IsExternalGeometry bool
EndingRoutePoint
EndingRoutePoint
mdrRoute
Point
StartingRoutePoint
mdrRoutePoint
StartingRoutePoint
mdrRoute
Point
Position
Position
Position
Radius
Radius
Position
Real
Real
2:109
12 Series
Clone
mdrRoute
Point
Returns
object
Name
String
Is That
Type
String type
String
Type
String type
DbElement
DBREF
IsEnabled
bool
Check if element is
enables.
IsNamed
Checks if element
is named
IsOn
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
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
2:110
Remarks
12 Series
DbElement
DBREF
DbElement
DBREF
Construct
DBREF
Constructs
route
point from DB
Equals
Bool
HeadRoutePoint
mdrRoute
Point
Gets head
point
TailRoutePoint
mdrRoute
Point
route
HeadRoutePoint
mdrRoutePoint
Sets head
point
TailRoutePoint
mdrRoutePoint
InsertRoutePointAt
Head
mdrRoutePoint
InsertRoutePointAtT
ail
mdrRoutePoint
InsertRoutePoint
mdrRoutePoint
RemoveRoutePoint
mdrRoutePoint
Remove
route
point from route
FindRoutePoint
mdrRoutePoint
RoutePoints
Array
of Gets route points
mdrRoutePoint
InsertRouteAtHead
mdrRoute
InsertRouteAtTail
mdrRoute
Appends route at
end
insert Route
mdrRoute,
mdrRoutePoint
Inserts route
route point
ExpandToRoute
route
at
ExpandRoutePoint
mdrRoute
size
real
at
mdrRoute
Point
changes
mdrRoutePoint
In place expand of
ext geom.
number of route
points in route
real
Route Point at
2:111
12 Series
SubRoute
mdrRoute
mdrRoutePoint,
mdrRoutePoint
HeadSubRoute
mdrRoute
mdrRoutePoint
TailSubroute
mdrRoute
mdrRoutePoint
Orientation
Transforms route
Transform
Length
Real
Length
Real
Length From
Real
Calculates
length
mdrRoutePoint,
mdrRoutePoint
route
Length
between
two route points
Length from route
point
mdrBaseManager
Name
Returns
Arguments
Description
CreateRoutePoint
mdrRoute
Point
Position
CreateRoutePoint
mdrRoute
Point
DBREF
CreateRoutePoint
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
BeginInteractiveQui
ckRouting
mdrRoute
Enter
Quick
Routing
model
editor for given
route
2:112
Remarks
12 Series
mdrConnectionManager
Name
Returns
Arguments
Description
CreateRouteFrom
ConnectionPoints
mdrRoute
Array
of For given path
mdrConnection described
by
Points
connection points
array create route
Remarks
CreateConnection mdrRoute
GraphFromBranc
hes
Array
DBREF
CreateConnection
ByGeometryFrom
branches
Array
DBREF
of Connect list of
branches base on
their positions
CreateConnection
sByGeometryFro
mOwner
DBRF
GetConnectedAtt
asToAtta
ARRAY
DBREF
of DBREF
Connect
owning
branches element
based on their pos
Connected
from atta
attas
mdrConnectionGraph
Name
Returns
Arguments
Description
GetAllConnectionPo Array
of
ints
mdrConnect
ionPoints
Get
connection
point list
Remarks
mdrConnectionPoint
Name
Returns
getRoutePoint
mdrRoute
Point
Arguments
Remarks
getConnectedRoute mdrRoute
Point
Point
Description
Get
connected
route point
2:113
12 Series
2.5.39
getFirstConnection
Type
Real
getSecondConnecti
onType
Real
NUMERICINPUT Object
Members
Member
Type
Purpose
val
REALGet/Set
range
REAL ARRAYGet/Set
ndp
REALReadonly
modifiedEvents
BOOLEANGet/Set
editable
BOOLEANGet/Set
Table 2: 66.
Methods
Method Name
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.
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.
.-------<-------------------.
|
<fgtagw> ------------------|
<fgpos> -------------------|
<fganch> ------------------|
<fgdock> ------------------|
/
-- NUMERICinput gname -++++-
2:114
12 Series
|
+- VALUE val -.
'-------------'- <vwid> -+- TOOLTIP text -.
'--------------'-->
Notes:
1. The tag text is displayed.
2. Default initial value is the minimum value of the range.
3. The range maximum is adjusted to be an integral number of steps.
4. NDP is the number of decimal places. If NDP is zero then all values will be integer.
5. Typed in values will be adjusted to the nearest valid value in the range.
6. The graph <vwid> allows the gadget width to be set specifically or in terms of other
gadgets on the form.
7. It is not possible to provide user formatting of the values displayed by the gadget.
Events and Callbacks
The Numeric input gadget supports SELECT and MODIFIED events, and users may
provide a callback method to service these events. Note that often no callback is required,
and the numeric input value is merely read and used by other gadgets of the form.
A SELECT event is raised whenever the user presses the ENTER key while the numeric
input display field has focus. Typically this happens after the user has typed in a required
value, but will also apply if the user enters the field after modifying the values using the up/
down arrows. The callback can be a simple or an open callback.
A MODIFIED event is raised for each modification of the displayed value using the up/down
arrows. Modified events are only reported if they are enabled and the user has provided a
PML open callback, as this allows differentiation from the SELECT events. The default state
is modified events disabled.
2.5.40
OBJECT
Method
Name
Result
Purpose
GetPathName()
STRING
Table 2: 68.
2:115
12 Series
2.5.41
OPTION Gadget
Members
Name
Type
Purpose
DText
ARRAY OF
STRING
Get/Set
DText[n]
STRING
Get Only
RText
ARRAY OF
STRING
Get/Set
RText[n]
STRING
Get Only
Count
REAL
Get only
Val
REAL
Get/Set
Name
Result
Purpose
Add(STRING Dtext)
Clear()
ClearSelection()
Table 2: 69.
list
of
Methods
2:116
12 Series
Name
Result
Purpose
FullName()
STRING
Name()
STRING
Owner()
FORM
Selection()
STRING
Get
current
RTEXT.
Selection(STRING text )
STRING
SetPopup(MENU menu)
Refresh()
NOT
RESULT
SetFocus()
RemovePopup(MENU menu)
GetPickedPopup()
MENU
Shown()
BOOLEAN
Type()
STRING
Background()
STRING
Get
Background
Name.
selections
menu
Colour
DisplayText( )
2:117
12 Series
Name
Result
SetPopup(
Purpose
!menu )
Clear( !dtext )
Clear( !fieldNumber )
Table 2: 70.
Command
The OPTION command defines an option gadget and specifies the position, tag or pixmap,
and callback text of the option (or list button) gadget. Also sets the width allowed for
displaying the list options when the gadget is selected.
The arrays defining the display texts and replacement texts for the gadget should be set in
the form's default constructor method.
Notes:
1. Option gadget's display text field is non editable, so doesn't need scroll width (syntax is
in fact in place for backwards compatibility).
.-------<-------.
/
|
>------ OPTion gname -+- <fgtagw> ------|
+- <fgpos> -------|
+- <fganch> ------|
+- <fgdock> ------|
+- CALLback text -|
+- TOOLTIP text --|
+- NORESELect ----|
+- ZEROSELection -|
+- CORE ----------* Core managed gadget
|
+- PIXmap <vshap> -.
'- <vwid> ---------+- TOOLTIP text -.
'----------------'-->
2:118
12 Series
2.5.42
ORIENTATION Object
Members
Name
Type
Purpose
Alpha
REAL
Get/Set
Beta
REAL
Get/Set
Gamma
REAL
Get/Set
Origin
DBREF
Get/Set
Table 2: 71.
2:119
12 Series
Methods
None of these methods modifies the original object.
Name
Result
Orientation( STRING)
EQ(ORIENTATION)
BOOLEAN
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.
2.5.43
Purpose
PARAGRAPH Gadget
Members
Name
Type
Purpose
Val
STRING
Get/Set
The
paragraph's
content as a string.
textual
REAL
Get/Set
Background
STRING
Get/Set
Set
Background
Name.
Table 2: 73.
Colour
2:120
12 Series
Methods
Name
Result
Purpose
AddPixmap(STRING)
AddPixmap(STRING, STRING)
AddPixmap(STRING, STRING,
STRING)
FullName()
STRING
Name()
STRING
Owner()
FORM
SetPopup (MENU)
RemovePopup(MENU)
GetPickedPopup()
MENU
Shown()
BOOLEAN
Type()
STRING
Background()
STRING
Get
Background
Name.
Colour
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.
2:121
12 Series
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:
2.5.44
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.
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.
2:122
12 Series
Definition Methods
None of these methods modifies the original object.
Name
Result
Purpose
Plane(POSITION, ORIENTATION)
PLANE
String()
STRING
Direction(DIRECTION)
DIRECTION Z
component
of
the
orientation uses standard
Outfitting
method
of
maintaining
X
and
Y
components
of
the
orientation.
Towards(POSITION)
Table 2: 76.
Towards(POSITION)
Orientation
Direction(DIRECTION)
Z
Y
Position
2:123
12 Series
Name
Result
Purpose
Intersection(LINE)
POSITION
Intersection(POINT
VECTOR)
POSITION
Intersections(ARC)
Intersection(PLANE, PLANE)
POSITION
PointVector()
POINTVECTOR
ThreeDPosition(XYPOSITION)
POSITION
Near(POSITION)
POSITION
Table 2: 77.
Intersection(PLANE, PLANE)
Intersection(LINE)
Near(POSITION)
ThreeDPosition(XYPOSITION)
Figure 2:42. POSITIONs returned by PLANE Object Methods
2:124
12 Series
Name
Result
Purpose
Line(REAL)
LINE
Intersection(PLANE)
LINE
Table 2: 78.
Intersection(PLANE)
2:125
12 Series
Name
Result
Purpose
XYOffset(Position)
XYPOSITIO
N
Returns
the
position,
mapped onto the plane, in
term of an XY offset from the
plane origin.
XYOffset(POSITION)
Figure 2:45. XYPositions Returned from PLANE Object Methods
2.5.45
PLANTGRID Object
Members
Name
Type
Purpose
Position
POSITION
Get/Set
Orientation
XSpacings
REAL ARRAY
Get/Set
YSpacings
REAL ARRAY
Get/Set
Table 2: 79.
2:126
12 Series
Methods
None of these methods modifies the original object.
Name
Result
Purpose
Plantgrid(POSITION,
ORIENTATION, ARRAY, ARRAY )
PLANTGRID
Xsize()
REAL
Maximum
direction.
size
in
the
Ysize()
REAL
Maximum
direction.
size
in
the
OutofBounds(POSITION)
BOOLEAN
Table 2: 80.
Orientation
Position
Ysize()
Z
YSpacing
XSpacing
Xsize()
X
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
2:127
used
grid
12 Series
GRIDPOINT(REAL1, REAL2)
NO RESULT
GRIDPOSITION()
POSITION
GRIDXSPACINGS()
ARRAY
GRIDXSPACINGS(ARRAY)
NO RESULT
GRIDXYPOSITION()
XYPOSITION
GRIDXYPOSITION(XYPOSITION)
NO RESULT
GRIDXYSIZE()
REAL ARRAY
Returns
the
size
of
rectangle which contains
the grid
GRIDYSPACINGS()
REAL ARRAY
GRIDYSPACINGS(ARRAY)
NO RESULT
GROSSAREA()
REAL
NETAREA()
REAL
ORIENTATION()
ORIENTATION
Returns the
orientation
ORIENTATION(ORIENTATION)
NO RESULT
Sets
the
platform's
orientation for given value
PLANE()
PLANE
PLATFORMGRID()
PLATFORMGRID Create
object.
PLATFORMGRID(DBREF)
2:128
platform's
platformgrid
12 Series
POSITION()
POSITION
POSITION(POSITION)
NO RESULT
XYSIZE()
ARRAY
Returns
the
size
of
rectangle (limits) which
contains the grid in platform
coordinate system
Name
Result
Purpose
ADDINNERBOUNDARY(PROFILE)
NO RESULT
CLEARINNERBOUNDARY()
NO RESULT
INNERBOUNDARIES()
PROFILE ARRAY
Returns array of
boundaries profiles
inner
INNERBOUNDARIES(ARRAY)
NO RESULT
Replaces
boundaries
inner
INNERBOUNDARY(REAL)
PROFILE
NUMBEROFINNERBOUNDARIES()
REAL
OUTERBOUNDARY()
PROFILE
the
of
Result
Purpose
CELLORIENTATION(REAL1,
REAL2)
ORIENTATION
Returns an orientation of
cell identified by given
index.
CELLPOSITION(REAL1, REAL2)
POSITION
CELLPROFILE(REAL1, REAL2)
PROFILE
CELLSIZE(REAL1, REAL2)
REAL ARRAY
CELLXYPOSITION(REAL1,
REAL2)
POSITION
2:129
12 Series
ISCELLTRIMMED(REAL1,
REAL2)
BOOL
Returns true
trimmed
if
cell
is
ISCELLUNTRIMMED(REAL1,
REAL2)
BOOL
Returns true
untrimmed
if
cell
is
ISCELLWITHIN(REAL1, REAL2)
BOOL
LISTOFTRIMMEDCELLS()
ARRAY
Returns indices
trimmed cells
LISTOFTRIMMEDCELLS(REAL)
ARRAY
LISTOFUNTRIMMEDCELLS()
ARRAY
Returns indices
untrimmed cells
TOTALNUMBEROFCELLS()
REAL
TRIMMEDCELLSIZE(REAL1,
REAL2)
ARRAY
Returns
the
size
of
rectangle which contains
the cell identified by given
index
of
of
all
all
2.5.47
Name
Result
Purpose
XGRIDLINES()
ARRAY
XGRIDLINES(REAL)
ARRAY
YGRIDLINES()
ARRAY
YGRIDLINES(REAL)
ARRAY
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'
2:130
12 Series
! ancestorElements = '/ATEST,/BTEST'
!elements = ''
!!report.AddScope(!ancestorElements, !elements)
And to export report as csv file
Result
Purpose
AddParameters(ARRAY
argNames, ARRAY
argValues)
No Result
AddScope(STRING
ancestorElements, STRING
elements)
No Result
AddScope(STRING
ancestorElements, STRING
elements,
BOOLEAN fully,
REAL minX,
REAL minY,
REAL minZ,
REAL maxX,
REAL maxY,
REAL maxZ)
No result
ExportAsCsv(STRING
reportFileName, STRING
destinationFilename)
No Result
2:131
12 Series
ExportAsPdf(STRING
reportFileName, STRING
destinationFilename)
No Result
ExportAsXlsx(STRING
reportFileName, STRING
destinationFilename)
No Result
ExportAsXls(STRING
reportFileName, STRING
destinationFilename)
No Result
InitializePrinterSetting No Result
()
2.5.48
OpenReportManager
No result
Print(STRING
reportFileName)
No result
PrintDirect(STRING
reportFileName)
No Result
PublishToAVEVANET(STRING No Result
reportFileName, STRING
pdfFilename)
RemoveParameters()
No Result
RemoveScope()
No Result
PMLSECURELOGIN
PMLSECURELOGIN object is used to control the encrypted command script generation
functionality.
Methods
Name
Result
Purpose
PMLSecureLogin( )
PMLSECUR
ELOGIN
EmbedMacro(BOOLEAN)
NO RESULT
HasLicenceToEmbedMacro(
)
BOOLEAN
Macro(STRING)
NO RESULT
MDB(STRING)
NO RESULT
Password(STRING)
NO RESULT
2:132
12 Series
Project(STRING)
NO RESULT
SaveToFile(STRING)
NO RESULT
User(STRING)
NO RESULT
VerifyAfter(DATETIME)
NO RESULT
VerifyBefore(DATETIME)
NO RESULT
VerifyHostnames(ARRAY)
NO RESULT
VerifyWinusers(ARRAY)
NO RESULT
Table 2: 81.
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
Macro(STRING)
NO RESULT
MDB(STRING)
NO RESULT
Project(STRING)
NO RESULT
SaveToFile(STRING)
NO RESULT
VerifyNonInteractive(BOO
LEAN)
NO RESULT
Table 2: 82.
2:133
12 Series
2.5.50
POINTVECTOR Object
Members
Name
Type
Direction
Position
POSITION
Get/Set
Table 2: 83.
Purpose
Origin of point
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.
Direction
Position
Figure 2:48. POINTVECTOR Object Definition
2:134
12 Series
Name
Result
Purpose
Offset(REAL)
POINTVECTOR
Towards(POSITION)
POINTVECTOR
Through(POSITION)
POINTVECTOR
Table 2: 84.
Offset(REAL)
Through(POSITION)
Towards(POSITION)
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
Table 2: 85.
2:135
12 Series
Intersection(PLANE)
Miscellaneous Methods
Name
Result
Intersections(ARC)
Plane()
PLANE
Line(REAL)
LINE
Table 2: 86.
2.5.51
Purpose
POSITION Object
Members
Name
Type
Purpose
East
REAL
Get/Set
North
REAL
Get/Set
Up
REAL
Get/Set
The Up component
Origin
DBREF
Get/Set
Table 2: 87.
2:136
12 Series
Methods
Name
Result
Purpose
Position(STRING )
POSITION
Position(STRING, FORMAT)
POSITION
Component(DIRECTION)
REAL
Magnitude of component in
specified DIRECTION.
EQ(POSITION)
BOOLEAN
LT(POSITION)
BOOLEAN
String(FORMAT)
STRING
Convert POSITION
STRING.
WRT(DBREF)
POSITION
REAL
ArcCentre(POSITION, POSITION,
POSITION, DIRECTION, REAL )
ARC
ArcCentre(POSITION, POSITION,
POSITION, DIRECTION, REAL)
ARC
Table 2: 88.
to
2:137
12 Series
POSITION A
POSITION X
RADIUS
POSITION B
Figure 2:51. !Arc = !posX.ArcFillet(!posA,!posB,!dir,!radius)
Name
Result
Purpose
ARC
ARC
Table 2: 89.
2:138
12 Series
POSITION X
POSITION B
MAJOR = FALSE
RADIUS
POSITION A
Figure 2:52. !Arc = !posX.ArcRadius(!posA,!posB,!dir,radius,!major)
Name
Result
Purpose
ARC
Table 2: 90.
POSITION X
POSITION A
POSITION B
Figure 2:53. !Arc = !posX.ArcThru(!posA,!posB,!dir)
2:139
12 Series
Name
Result
Purpose
ARC
Table 2: 91.
POSITION A
POSITION X
RADIUS
POSITION B
Figure 2:54. !Arc = !posX.ArcThru(!posA,!posB,!dir,!radius)
Name
Result
Purpose
ARC
Direction(POSITION)
BOOLEAN
Returns
the
direction
between the position and the
supplied position
Distance(ARC)
REAL
MidPoint(POSITION)
POSITION
Returns
the mid point
between the two positions
2:140
12 Series
Name
Result
Purpose
Near(POSITION, REAL)
BOOLEAN
Offset(DIRECTION, REAL)
POSITION
Plane(POSITION, POSITION)
PLANE
Distance(LINE)
REAL
Distance(PLANE)
REAL
Distance(POSITION)
REAL
Line(POSITION)
LINE
MidPoint(POSITION)
POSITION
Returns
the mid point
between the two positions
Near(POSITION, REAL)
BOOLEAN
Offset(DIRECTION,
REAL)
POSITION
Plane(POSITION, POSITION)
PLANE
Table 2: 92.
2.5.52
POSTEVENTS Object
The user may provide a PostEvents object, which should provide the methods described
below.
To use this feature, you must create a global object of this type and call it !!postEvents.
The method !!postEvents.postMark will be called every time an undoable is created,
after the undoable has been added to the undo stack.
2:141
12 Series
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)
postUndo (STRING)
postRedo(STRING)
postClearMark()
postClearAll()
Table 2: 93.
2.5.53
Purpose
PROJECT Object
Members
Name
Type
Purpose
Name
STRING
Evar
STRING
Table 2: 94.
2:142
12 Series
Methods
Name
Result
Purpose
Active()
REAL
Code()
STRING
Project
code,
characters, e.g. MAR
Description()
STRING
Mbcharset()
STRING
Multibyte
number
Message()
STRING
Name()
STRING
Project name
Number()
STRING
Project number, up to 17
characters.
Isglobal()
BOOLEAN
Locations()
CurrentLocation()
LOCATION
Sessions()
CurrentSession()
SESSION
Dblist()
ARRAY OF List of
DB
project.
OBJECTS
MDBList()
ARRAY
MDBS
UserList()
ARRAY
USERS
Macros()
Messages()
Table 2: 95.
three
character
set
in the
2:143
12 Series
Commands
!ARRAY = PROJECTS
2.5.54
PROFILE Object
Members
Name
Type
Purpose
Position
POSITION
Get/Set
Origin of profile
Orientation
Pointer
POINTER
Get Only
Definition of profile
Name
Result
Purpose
Profile(POSITION, ORIENTATION,
ARRAY)
PROFILE
Profile(DBREF)
PROFILE
Table 2: 96.
Methods
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.
2:144
12 Series
Name
Result
Purpose
Profile(DBREF1,DBREF2)
PROFILE
Profile(PROFILE)
PROFILE
Plane()
PLANE
IsClosed()
BOOLEAN
IsValidClosed ()
BOOLEAN
Sense()
BOOLEAN
Area()
REAL
Length()
REAL
IsCircle()
BOOLEAN
IsFillet(REAL)
BOOLEAN
Table 2: 97.
2:145
12 Series
Name
Result
Purpose
edges()
ARRAY
numberEdges()
REAL
edge(REAL)
LINE/ARC
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.
2:146
12 Series
Name
Result
Purpose
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
Table 2: 98.
Result
Purpose
mirror(LINE)
PROFILE
translate(REAL1,REAL2)
PROFILE
rotate(REAL, POSITION)
PROFILE
close()
PROFILE
reverse()
PROFILE
2:147
12 Series
Name
Result
Purpose
mergearcs(REAL1, REAL2)
PROFILE
mergearcs()
PROFILE
mergelines(REAL)
PROFILE
mergelines()
PROFILE
Merge colinear
lines into one.
mergepoints(REAL)
PROFILE
Remove
coincident
consecutive points according
to tolerance supplied
mergepoints()
PROFILE
Remove
consecutive points
polyline(REAL)
PROFILE
polyline()
PROFILE
projectArcs(REAL)
PROFILE
Table 2: 99.
contiguous
coincident
2:148
12 Series
Name
Result
Purpose
Near(POSITION)
POSITION
Near(REAL,POSITION)
POSITION
NearEdges(POSITION)
ARRAY
2:149
12 Series
Name
Result
Purpose
IsWithin(POSITION)
BOOLEAN
IsWithout(POSITION)
BOOLEAN
OnProfile(POSITION)
BOOLEAN
Result
Purpose
IsWithin(PROFILE)
BOOLEAN
IsWithout(PROFILE)
BOOLEAN
IsIntersecting(PROFILE)
BOOLEAN
Table 2: 101. PROFILE Object Methods that Query Profile to Profile Relationships
2:150
12 Series
Result
Purpose
intersections(LINE)
intersections(ARC)
intersections(PROFILE)
2:151
12 Series
Result
Purpose
intersect(PROFILE)
union(PROFILE)
difference(PROFILE)
split(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.
2:152
12 Series
2.5.55
RADIALGRID Object
RADIAL GRID Object Members
Name
Type
Purpose
Position
POSITION
Get/Set
Orientation
ORIENTATION
Get/Set
Radii
REAL ARRAY
Get/Set
Angles
REAL ARRAY
Get/Set
2:153
12 Series
Name
Result
Purpose
Radialgrid( POSITION,
ORIENTATION, ARRAY, ARRAY)
RADIALGRID
Orientation
Position
Z
Y
Angles
X
Radii
RadialPosition(REAL, REAL)
Snap(POSITION)
Angle[1]
Snap(LINE)
Radius[1]
Radius[2]
Radius[3]
GridPoint(REAL, REAL)
2:154
12 Series
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
Real(BORE)
REAL
Real(STRING)
REAL
Constructors
REAL
2:155
12 Series
Name
Result
Purpose
Real(REAL, UNIT)
n/a
Value()
REAL
Dimension()
MEASURE
Unit()
Units()
UNIT
AllDimensions()
ARRAY
of Set of all standard dimensions.
MEASURES
AllUnits()
ARRAY
UNITS
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
DBUnits()
REAL
CurrentUnits()
REAL
2:156
12 Series
Name
Result
Purpose
CurrentUnits(STRING)
CurrentUnits(UNIT)
CurrentUnits(MEASURE)
REAL
REAL
ACos()
REAL
ALog()
REAL
ASin()
REAL
ASIN. The
numeric.
ATan()
REAL
ATanT(REAL)
REAL
Between(REAL, REAL)
BOOLEAN
Boolean()
BOOLEAN
Bore()
BORE
Cosine()
REAL
Distance()
STRING
2:157
real
must
be
purely
12 Series
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 Outfitting
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
EQ(REAL)
BOOLEAN
GEQ(BORE)
BOOLEAN
GEQ(REAL)
BOOLEAN
GT(BORE)
BOOLEAN
GT(REAL)
BOOLEAN
INT()
REAL
LEQ(BORE)
BOOLEAN
LEQ(REAL)
BOOLEAN
LOG()
REAL
2:158
12 Series
Name
Result
Purpose
LT(BORE)
BOOLEAN
LT(REAL)
BOOLEAN
MODULO (REAL)
REAL
NearestBore()
BORE
Nint()
REAL
Power(REAL)
REAL
Real()
REAL
SBetween (REAL,REAL)
BOOLEAN
Sine()
REAL
Sqrt()
REAL
String(STRING precision)
STRING
String(FORMAT)
STRING
Tangent()
REAL
2:159
12 Series
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:
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)
Table(TABLE)
AddColumn(STRING key,
COLUMNFORMAT, STRING heading)
NextEntriesIndex(REAL position)
NextEntriesIndex(REAL n, STRING)
SetCaseMatch(BOOLEAN)
2:160
12 Series
Name
Result
Purpose
Initialise()
Re-initialises
counter.
the
next
EvaluateTable()
Keys()
STRING
ARRAY
Returns an ARRAY of
STRINGS that are the
column keys used on this
report.
ColumnFormat(STRING key)
COLUMN
FORMAT
STRING
Table()
TABLE
CaseMatch()
BOOLEAN
BOOLEAN
Results(ARRAY)
BOOLEAN
ResultsMatch(STRING, ARRAY,
ARRAY)
BOOLEAN
ResultsMatch(STRING, ARRAY)
BOOLEAN
2:161
12 Series
Name
Result
Purpose
BOOLEAN
NextEntries(REAL n, ARRAY)
BOOLEAN
BOOLEAN
NextLines(REAL n, ARRAY)
BOOLEAN
BOOLEAN
NextEntriesMatch(REAL n, STRING
value, ARRAY Dtext)
BOOLEAN
NextEntriesIndex()
REAL
NextLinesIndex()
REAL
NextEntriesIndex (STRING)
REAL
2:162
12 Series
2.5.58
RTOGGLE Gadget
Members
Name
Result
Purpose
val
BOOLEAN
Get/Set
index
REAL
Only
onVal
STRING
Get/Set
offVal
STRING
Get/Set
visible
BOOLEAN
Get/Set
Visibility.
active
BOOLEAN
Get/Set
callback
STRING
Get/Set
Callback string.
tag
STRING
Get/Set
Tag text.
2:163
12 Series
Methods
Name
Result
Purpose
FullName( )
STRING
Name( )
STRING
Owner( )
FORM
SetPopup( MENU )
RemovePopup( MENU )
GetPickedPopup( )
MENU
Refresh( )
Shown( )
BOOLEAN
SetToolTip( STRING )
Type( )
STRING
Background()
STRING
Get
Background
Name.
Colour
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:164
12 Series
.-------<------------.
/
|
>- 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
2:165
12 Series
Display Methods
Name
Result
Purpose
Redraw ()
No Result
Highlight ()
No Result
Show (BOOLEAN)
No Result
setClipping (BOOLEAN,
DBREF)
No Result
showClipItems
(BOOLEAN, DBREF)
No Result
redefinePoints
(DIRECTION)
No Result
Colour (REAL)
No Result
Translucency (REAL)
No Result
the
Query Methods
Name
Result
Purpose
isValid ()
BOOLEAN
queryDbref ()
DBREF
Returns the
element.
2:166
actual
database
12 Series
queryShow ()
BOOLEAN
queryClip ()
BOOLEAN
queryType ()
STRING
queryColour ()
INTEGER
queryTranslucency ()
INTEGER
of
the
2.5.60
Result
Purpose
SectionPlaneManager () constructor
Creates
the
Section
Manager Object
Plane
Display Methods
Name
Result
Purpose
initialise (BOOLEAN)
No Result
add (DBREF)
No Result
No Result
2:167
12 Series
add (STRING)
No Result
remove (DBREF)
No Result
remove (SECTIONPLANE)
No Result
clear ()
No Result
highlight (DBREF)
No Result
redraw (DBREF)
No Result
clip (BOOLEAN)
No Result
show (BOOLEAN)
No Result
showClipping
(BOOLEAN)
No Result
colour (REAL)
No Result
translucency (REAL)
No Result
createPoints
(STRING1,STRING2,
DIRECTION)
No Result
endCreatePoints
No Result
2:168
12 Series
Query Methods
Name
Result
Purpose
query ()
ARRAY of
Get all Section Planes in the 3D view
SECTIONPLANEs
querySelected ()
DBREF
Create Methods
Name
Result
Purpose
createSpla (name,
library name, first
point, second
point, extrusion
direction)
SECTIONPLANE
createFpla (name,
library name,
point, normal
direction)
SECTIONPLANE.
createPpla (name,
library name,
point)
SECTIONPLANE.
2:169
12 Series
2.5.61
SELECTOR Gadget
Members
Name
Type
Purpose
Add(STRING Dtext)
Val
REAL
Get/Set
Val
DText
STRING
ARRAY
Get/Set
DText[n]
STRING
Get Only
PickedField
REAL
Get Only
Name
Result
Purpose
FullName()
STRING
Name()
STRING
Owner()
FORM
Shown()
BOOLEAN
Type()
STRING
Methods
2:170
12 Series
Name
Result
Purpose
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)
SetFocus()
SetToolTip(STRING)
Refresh()
RemovePopup(MENU)
GetPickedPopup()
MENU
Clear()
ClearSelection()
Background()
STRING
Get
Background
Name.
Colour
2:171
12 Series
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 --.
------------------->
Default:
2:172
12 Series
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
Entered
STRING
Get/Set
LocationName
STRING
Get/Set
Name of
Session
IsRemote
STRING
Get/Set
IsCurrent
BOOLEAN
Get/Set
Name
Result
Purpose
SESSION (STRING)
SESSION
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()
Deferred()
Location
for
own
Methods
2:173
12 Series
Name
Result
Purpose
Location()
LOCATION
MDB()
MDB
Mode()
Modified()
BOOLEAN
Module()
STRING
Status()
User()
USER
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.
The Modified() method only applies to the current Session at the current
location.
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:174
12 Series
Command
2.5.63
SLIDER Gadget
Members
Name
Type
Purpose
visible
BOOLEAN
Get/Set
Visibility.
active
BOOLEAN
Get/Set
callback
STRING
Get/Set
Callback string.
tag
STRING
Get/Set
val
REAL
Get/Set
background
REAL
Get/Set
background
range
REAL
ARRAY
Get/Set
tickstyle
REAL
Get/Set
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:175
12 Series
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.
Methods
Name
Result
Purpose
FullName()
STRING
Name()
STRING
Owner()
FORM
SetToolTip(STRING)
Shown()
BOOLEAN
Type()
STRING
Refresh()
Background()
STRING
Get
Background
Name.
Colour
SetFocus()
2:176
12 Series
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
Before(STRING two)
STRING
Return
sub-string
before
leftmost occurrence of substring two.
Block()
BLOCK
2:177
12 Series
Name
Result
Purpose
Boolean()
BOOLEAN
Bore()
BORE
Bore(FORMAT)
BORE
DBRef()
DBREF
DBRef(FORMAT)
DBREF
Digits()
REAL
Direction()
DIRECTION
Convert
STRING
DIRECTION.
Direction(FORMAT)
DIRECTION
Convert
STRING
to
a
DIRECTION
using
the
settings in the global format
object.
Empty()
BOOLEAN
EQNoCase( STRING )
BOOLEAN
isDigits()
BOOLEAN
isLetters( )
BOOLEAN
2:178
to
12 Series
Name
Result
Purpose
isLettersAndDigits( )
BOOLEAN
Length()
REAL
Number
string.
LowCase()
STRING
LT(STRING)
BOOLEAN
Comparison using
collating sequence.
Match(STRING two)
REAL
MatchWild(STRING two)
BOOLEAN
of
* for
any
characters
characters
in
ASCII
number
of
BOOLEAN
BOOLEAN
Occurs(STRING)
REAL
Orientation()
Orientation(FORMAT !!format)
Part(REAL nth)
STRING
STRING
2:179
to
an
12 Series
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(STRING two,STRING
three,REAL nth)
STRING
Replace(STRING wo,STRINGt
hree,REAL nth,REAL count)
STRING
Split()
ARRAY
Split(STRING elim)
ARRAY
String(BLOCK)
STRING
String(BOOLEAN)
STRING
String(BOOLEAN,FORMAT)
STRING
String(BORE)
STRING
String(BORE,FORMAT)
STRING
String(DB)
STRING
2:180
to
12 Series
Name
Result
Purpose
String(DB,FORMAT)
STRING
String(DIRECTION)
STRING
String(DIRECTION,FORMAT)
STRING
String(FORMAT)
STRING
Convert
STRING
to
a
STRING using the settings in
the global FORMAT object.
String(MDB)
STRING
String(ORIENTATION)
STRING
String(ORIENTATION,FORMAT)
STRING
String(POSITION)
STRING
String(POSITION,FORMAT)
STRING
String(PROJECT)
STRING
String(REAL)
STRING
String(REAL,FORMAT)
STRING
String(REAL,STRING)
STRING
String(SESSION)
STRING
String(TEAM)
STRING
2:181
12 Series
Name
Result
Purpose
String(USER)
STRING
Substring(REAL index,REAL
nchars)
STRING
Substring(REALindex)
STRING
Trim()
STRING
Trim(STRING options,STRING
char)
STRING
Trim(STRINGoptions)
STRING
Remove
initial
spaces
(options =L), trailing spaces
(options = R) or both
(options =LR).
UpCase()
STRING
VLogical()
BOOLEAN
Evaluate STRING as a
BOOLEAN.
VText()
STRING
Evaluate STRING as a
STRING.
VValue()
REAL
Evaluate STRING as a
REAL.
Notes:
2:182
12 Series
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!
!val = !strdgts.Digits()
q var !val
<REAL> 1234
Is String Letters And Digits Only?
Example:
2:183
12 Series
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
modifyMode
(BOOLEAN)
none
enableModifyMode ()
BOOLEAN
enableModifyMode
(BOOLEAN)
BOOLEAN
.featureHighlight
(BOOLEAN)
No Result
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:184
12 Series
Methods
Name
Result
Purpose
Table()
Table(COLLECTION, COLUMNARRAY)
PrimaryKey(COLLECTION)
PrimaryKey(ARRAY of DBREF)
Column(REAL n, COLUMN)
ClearColumns()
Columns(COLUMN ARRAY)
Evaluate()
EvaluatePrimaryKey()
Re-evaluates the
Key collection.
Primary
PrimaryKey()
DBREF
ARRAY
Columns()
COLUMN
ARRAY
Returns
the
column
definitions. The order of the
columns is important when
sorting.
ANY
Column(REAL, n)
ARRAY
Row(REAL, n)
ARRAY
ANY
2:185
12 Series
Name
Result
Purpose
Column(STRING key)
ARRAY
Row(DBREF)
ARRAY
Name
Type
Purpose
Name
STRING
Description
STRING
Refno
STRING
STRING
containing
Database reference number.
of
2.5.67
TEAM Object
Members
Methods
None of these methods modifies the original object.
Name
Result
Purpose
DbList()
UserList()
TEAM(DBREF)
TEAM
Returns a TEAM
given a DBREF.
TEAM(STRING)
TEAM
object,
!D = OBJECT TEAM(!!CE)
!D = OBJECT TEAM(!!CE.Name)
2:186
12 Series
!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
TEXT Gadget
Members
Name
Type
Purpose
Val
STRING
Get/Set
Val
REAL
Set
Val
BOOLEAN
Get/Set
Val
'AS
DEFINED
Get/Set
DataType
Echo
BOOLEAN
Get Only
Format
Scroll
REAL
Only
ValidateCall
STRING
Get/Set
2:187
12 Series
Name
Type
Purpose
Editable
BOOLEAN
Get/Set
Name
Result
Purpose
FullName()
STRING
Name()
STRING
Owner()
FORM
Clear()
SetEditable(BOOLEAN)
SetFocus()
SetToolTip(STRING)
Refresh()
GetPickedPopup()
MENU
Shown()
BOOLEAN
Type()
STRING
Methods
2:188
12 Series
Name
Result
Purpose
events
off
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 -.
------------------>
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:189
12 Series
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
Count
REAL
Only
Methods
Name
Result
Purpose
FullName()
STRING
Name()
STRING
Get the
'gadget'.
Owner()
FORM
Clear()
Line(REAL )
STRING
SetLine(REAL, 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)
SetPopup(MENU)
RemovePopup(MENU)
2:190
gadget's
name,
name,
e.g.
12 Series
Name
Result
Purpose
GetPickedPopup()
MENU
SetToolTip(STRING)
Refresh()
Shown()
BOOLEAN
Type()
STRING
Background()
STRING
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:191
12 Series
.--------<--------.
/
|
>-- TEXTPane gname --+-- tagtext---------|
+-- <fganch> -------|
+-- <fgdock> -------|
+-- <fgpos> --------|
+-- FIXCHARS -------|
+-- CORE -----------*
-- <vshap> --->
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
FullName()
STRING
Name()
STRING
Owner()
FORM
SetFocus()
SetPopup(MENU)
RemovePopup(MENU)
Methods
2:192
12 Series
Name
Result
Purpose
GetPickedPopup()
MENU
Refresh()
Shown()
BOOLEAN
SetToolTip
STRING
Type()
STRING
Background()
STRING
Get
Background
Name.
Colour
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:193
12 Series
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)
add()
endundoable()
undoAction (STRING)
2:194
Purpose
12 Series
Name
Result
Purpose
redoAction(STRING)
clearAction(STRING)
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
Unit(STRING)
UNIT
Constructors
Unit()
Methods
Name
Result
Purpose
STRING
2:195
12 Series
Name
Result
Purpose
Name()
STRING
ShortName()
STRING
Hashcode()
Ptype()
STRING
REAL
General Queries
Enum()
REAL
UnitQualifier()
STRING
Dimension()
MEASURE
Dimension of unit.
IsStandard()
BOOLEAN
IsNull()
BOOLEAN
AllDimensions()
ARRAY
of Set of all standard dimensions.
MEASURES
AllUnits()
ARRAY
UNITS
IsImperial()
BOOLEAN
IsMetric()
BOOLEAN
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:196
12 Series
2.5.73
USER Object
Member
Name
Result
Purpose
Name
STRING
Description
STRING
Access
STRING
Refno
STRING
STRING
containing
Database reference number.
Name
Result
Purpose
TeamList()
WorkingList()
Password()
STRING
No value.
USER(DBREF)
USER
Returns a USER
given a DBREF.
USER(STRING)
USER
Method
object,
!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:197
12 Series
!ARRAY = USERS
2.5.74
VERIFY
VERIFY object is used directly to verify that the executing user is on a list of approved users
and is running on an approved host computer, and is running within a given time period. If
the condition is not met the command script terminates immediately with a "Verification
error".
Methods
Name
Result
Purpose
Verify( )
After(DATETIME)
NO RESULT
Before(DATETIME)
NO RESULT
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
WinUser(ARRAY)
NO RESULT
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:198
12 Series
Set-up Methods
Name
Purpose
.view(DBREF)
Methods
Name
Result
Purpose
.redraw()
No Result
.update3d()
No Result
.colour ( REAL)
No Result
.translucency(BOOLEAN)
No Result
.align()
No Result
.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
.show()
No Result
Query Methods
Name
Result
Purpose
.valid()
BOOLEAN
.view()
DBREF
.position()
POSITION
.direction()
DIRECTION
2:199
12 Series
.size()
ARRAY
REAL
.dynamic()
BOOLEAN
2.5.76
Name
Type
Purpose
Channel
STRING
Get/Set
Get or
channel.
Name
Result
Purpose
Clear()
Refresh
SetFocus()
NO RESULT Set
the
keyboard
immediately to this
gadget.
removeRequests()
Background()
STRING
set
the
assigned
Methods
focus
Alpha
2:200
12 Series
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 -->
2.5.77
Name
Type
Purpose
Limits
REAL
ARRAY[4]
Get/Set
Get
or
set
[x1,y1,x2,y2].
Borders
BOOLEAN
Get/Set
Background
REAL
Set
Background
Contents
REAL
ARRAY[2]
Get/Set
Defcall
STRING
Get/Set
Height
REAL
Only
Highlight
REAL
Set
Highlight
Prompt
GADGET
Get/Set
Subtype
Width
REAL
Only
limits
box
2:201
12 Series
Methods
Name
Result
Purpose
Background()
STRING
Clear()
Highlight()
STRING
Refresh()
RestoreView(REAL storeNumber)
SaveView(REAL storeNumber)
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 -->
Outfitting Draft where <sgid> is either CE (current element) or the name of a 2D graphical
element (e.g., an Outfitting Draft SHEET, VIEW, LIBRARY, etc.) and <colno> is any valid
Outfitting Draft colour definition.
2:202
12 Series
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
2.5.78
Name
Type
Purpose
Background
REAL
Set
Background
Borders
BOOLEAN
Get/Set
Contents
REAL
ARRAY[2]
Get/Set
Defcall
STRING
Get/Set
Height
REAL
Only
Highlight
REAL
Set
Highlight
Prompt
GADGET
Get/Set
Subtype
Width
REAL
Only
2:203
12 Series
Methods
Name
Result
Purpose
Add(STRING)
Background()
STRING
Clear()
Highlight()
STRING
Refresh()
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 Outfitting 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:204
12 Series
2.5.79
Name
Type
Background
REAL
Set
Background
Contents
REAL
ARRAY[2]
Get/Set
Defcall
STRING
Get/Set
Height
REAL
Only
Highlight
REAL
Set
Highlight
Prompt
GADGET
Get/Set
Subtype
Width
REAL
Only
Borders
BOOLEAN
Get/Set
Direction
REAL
ARRAY[3]
Get/Set
EyeMode
BOOLEAN
Get/Set
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:205
Purpose
Get/ Get or set Background
Colour Number
Colour
box
12 Series
Name
Type
Purpose
Radius
REAL
Set
Range
REAL
Set
Refresh
RestoreView
REAL
Set
SaveView
REAL
Set
Shaded
BOOLEAN
Get/Set
Step
REAL
Set
Through
REAL
ARRAY[3]
Get/Set
WalkThrough
BOOLEAN
Get/Set
TRUE
for
Walkthrough
(equivalent to Eyemode).
LabelStyle
STRING
Get/Set
Bearing
REAL
Set
Elevation
REAL
Set
as
2:206
12 Series
Methods
Name
Result
Purpose
Background()
STRING
Highlight()
STRING
RestoreView(REAL storeNumber)
SaveView(REAL storeNumber)
as
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 ------------------------->
Where:
2:207
12 Series
<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:
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.
Methods
Name
Result
Purpose
XYposition()
String()
STRING
Returns a XYPOSITION as a
STRING.
2:208
12 Series
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
3.3
Scope
The current implementation has been developed mainly for the Outfitting 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 Outfitting 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.
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 Outfitting is !!edgCntrl.
PickPacket - this is a definition of the pick sequence and types that are used by an
application packet.
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
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
edgPacket
edgPickPacket
edgPickType
edgPick
edgPosCntrl
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
The following table lists the secondary components and object that are used by the system:
Object
Description
edgTypes
appMathLib
edgPickData
edgPositionData
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
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
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
3.9
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 Outfitting Design applications.
3:6
12 Series
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
.remove(STRING)
Result
Action
.setPrompt(STRING)
.setPrompt(STRING,
STRING)
setStackPrompt(STRIN
G, STRING)
3:7
12 Series
Result
Action
.viewStack()
.viewStack(REAL)
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:
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
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:
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:
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
3.9.5
3:10
12 Series
!!edgCntrl.viewStack()
Currently Active EDG Packet
Description
Key
Type
Priority
Initialisation
Action
Form
Remove
Input Data
Pick Packet
Description
:
:
:
:
:
:
:
:
:
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
3.10
Administration data
Actions
3:11
12 Series
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
.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
.form
3:12
12 Series
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
.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
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
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
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
.priority
REAL
.initialisation
STRING
.close
STRING
.action
STRING
.continue
STRING
.escape
STRING
.form
FORM
.pickPacket
EDGPICKPACKET
.remove
BOOLEAN
.input
ARRAY
Action
.navigate()
.elementPick(<prompt>)
.plinePick(<prompt>)
.anyPick(<prompt>)
.aidPick(<prompt>)
3:16
12 Series
.definePosition(<prompt>)
.defineCircle(<option>)
.definePoint(<option>)
.defineLine(<option>)
.definePlane(<option>)
.defineMeasure(<option>)
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()
Arguments
Description
Packet Members
Settings
.description
Standard Navigate.
.priority
10.
.remove
True.
.input
Return Array
Description
None
None.
Method Name
Description
.elementPick(<prompt>)
Arguments
Description
<prompt>
Packet Members
Settings
.description
.priority
0.
.remove
False.
.input
3:17
12 Series
Return Array
Description
[1] edgPickData
Method Name
Description
.plinePick(<prompt>)
Arguments
Description
<prompt>
Packet Members
Settings
.description
.priority
0.
.remove
False.
.input
Return Array
Description
[1] edgPickData
Method Name
Description
.anyPick(<prompt>)
Arguments
Description
<prompt>
Packet Members
Settings.
.description
.priority
0.
.remove
False.
.input
Return Array
Description
[1] edgPickData
Method Name
Description
.aidPick(<prompt>)
Arguments
Description
<prompt>
3:18
12 Series
Packet Members
Settings
.description
.priority
0.
.remove
False.
.input
Return Array
Description
[1] edgPickData
Method Name
Description
.definePosition(<prompt>)
Arguments
Description
<prompt>
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>)
Argument (Option)
Description
3pnt
diameter3D
radius3D
3:19
12 Series
fixedRadius3D
fixedDiameter3D
diameter2D
radius2D
fixedRadius2D
fixedDiameter2D
fillet
tanTan
pntTan
fixedRadiusPntTan
fixedRadiusPntPnt
derive
tan3Lines
Packet Members
Settings
.description
Defined by option.
.priority
0.
.remove
True.
.input
Return Array
Description
[1] arc
3:20
12 Series
Method Name
Description
.definePoint(<option>)
Argument (Option)
Description
pnt
Packet Members
Settings
.description
Defined by option.
.priority
0.
.remove
True.
.input
Return Array
Description
[1] position
Method Name
Description
.defineLine(<option>)
Argument (Option)
Description
pntPnt
angle
derive
pntTan
tanTan
bisect
Defines a line that bisect the two lines picked, line is based
on the first line picked.
twoPlanes
shortest
3:21
12 Series
Packet Members
Settings
.description
Defined by option.
.priority
0.
.remove
True.
.input
Return Array
Description
[1] line
Method Name
Description
.definePlane(<option>)
Argument (Option)
Description
3pnt
Packet Members
Settings
.description
Defined by option.
.priority
0.
.remove
True.
.input
Return Array
Description
[1] plane
Method Name
Description
.defineMeasure(<option>)
Argument (Option)
Description
distance
shortest
angle
3:22
pick
sequence
to
derive
12 Series
lineAngle
Packet Members
Settings
.description
Defined by option.
.priority
0.
.remove
True.
.input
Return Array
Description
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
= object EDGPACKET()
= '!this.input[1] = !!ce'
= '!!ce = !this.return[1].item'
-- Set the close sequence, so that the user returns to the original
-- element
!packet.close
= '!!ce = !this.input[1]
= object EDGPACKET()
= '!this.input.append(!this.return[1].item)'
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
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()
= '!!xxxGlobalStore = ARRAY()'
= '!!xxxStoreElement(!this.return[1].item)'
= '!!xxxTagElements(|NAME|)'
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
-- 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
-- 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
= object EDGPACKET()
= '!!xxxForm.position(!this.return[1].position)'
= !!xxxForm
It should be noted that there are several ways in which the event packet form can be closed:
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
= object EDGPACKET()
='!action(!this.return[1])'
The following example equates to the old style "pick a pline of a section":
VAR !<varid> PICK PLINE
-- Define event packet
!packet
= object EDGPACKET()
PROMPT OFF
PROMPT LOAD ESCAPE '<prompt>'
='!action(!this.return[1])'
The following example equates to the old style "pick a ppoint of an element":
3:28
12 Series
= object EDGPACKET()
='!action(!this.return[1])'
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
3:29
12 Series
stack the packet that is running, only removing it from the system, once the subsequent
packet has finished.
3.11
Administration data
Actions
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
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
.key
STRING
.prompt
STRING
.picks
ARRAY
.action
STRING
Action carried out after all the picks within the pick
sequence have been completed.
.input
ARRAY
Methods
There are several methods that can be used to define a standard pick packet, the following
are the ones currently supported:
Name
Action
.stdView(<prompt>)
3:31
12 Series
.stdElement(<prompt>)
.stdAny(<prompt>)
.stdPpoint(<prompt>)
.stdPline(<prompt>)
.stdAid(<prompt>)
.stdGraphic(<prompt>)
.direction(<prompt>)
.measureDistance()
.measureAngle()
.measureLineAngle()
.stdPosition(<prompt>)
.circle3pnts()
.circleDia3d()
.circleRad3D()
.circleFixRad3D(<any>)
.circleFixDia3D(<any>)
.circleDia2D(<any>)
.circleRad2D(<any>)
.circleFixRad2D(<any>,
<any>)
.circleFixDia2D(<any>,
<any>)
.circleFillet(<any>)
.circleTan3Lines()
.circleTanTan(<any>)
.circlePntTan()
.circleFRadPntTan(<any>)
.circleFRadPntPnt(<any>)
.circleDerive()
.pointPnt()
.linePntPnt()
Define a line.
.lineAngle(<any>)
.lineDerive()
3:32
12 Series
.linePntTan()
.lineTanTan()
.lineBisect()
.lineTwoPlanes()
.lineShortest()
.plane3pnts()
.plane2pnts(<position>)
.planeDerive()
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>)
Arguments
Description
<prompt>
Picks Types
Description.
[1] stdScreen
[2] stdScreen
Settings
.description
.key
StdGphWindow.
.input
Return Array
Description
[1] ARC
Method Name
Description
.stdScreen(<prompt>)
Arguments
Description
<prompt>
3:33
12 Series
Picks Types
Description.
[1] stdScreen
Settings
.description
.key
StdScreen.
.input
Return Array
Description
[1] POINTVECTOR
Method Name
Description
.stdView(<prompt>)
Arguments
Description
<prompt>
Picks Types
Description
[1] stdView
Settings
.description
.key
stdView.
.input
Return Array
Description
[1] GADGET
Method Name
Description
.stdElement(<prompt>)
Arguments
Description
<prompt>
Picks Types
Description.
[1] stdElement
Settings
.description
3:34
12 Series
.key
stdElement.
.input
Return Array
Description
[1] edgPickData
Method Name
Description
.stdAny(<prompt>)
Arguments
Description
<prompt>
Picks Types
Description
[1] stdAny
Settings
.description
.key
stdAny.
.input
Return Array
Description
[1] edgPickData
Method Name
Description
.stdPpoint(<prompt>)
Arguments
Description
<prompt>
Picks Types
Description
[1] stdPpoint
Pick a ppoint.
Settings
.description
.key
stdPpoint.
.input
Return Array
Description
[1] edgPickData
3:35
12 Series
Method Name
Description
.stdPline(<prompt>)
Arguments
Description
<prompt>
Picks Types
Description
[1] stdPline
Settings
.description
.key
stdPline.
.input
Return Array
Description
[1] edgPickData
Method Name
Description
.stdAid(<prompt>)
Arguments
Description
<prompt>
Picks Types
Description
[1] stdAid
Settings
.description
.key
stdAid.
.input
Return Array
Description
[1] edgPickData
Method Name
Description
.stdGraphic(<prompt>)
Arguments
Description
<prompt>
3:36
12 Series
Picks Types
Description
[1] stdGraphics
Settings
.description
.key
stdGraphic.
.input
Return Array
Description
[1] edgPickData
Method Name
Description
.direction(<prompt>)
Arguments
Description
<prompt>
Picks Types
Description.
[1] stdGraphics
Settings
.description
.key
direction.
.input
Return Array
Description
[1] DIRECTION
Method Name
Description
.measureDistance()
Picks Types
Description
[1] stdPosition
[2] stdPosition
Settings
.description
.key
measureDistance.
.prompt
Measure distance.
.input
3:37
12 Series
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()
Picks Types
Description
[1] stdPosition
[2] stdPosition
[3] stdPosition
Settings
.description
.key
measureAngle.
.prompt
Measure angle.
.input
Return Array
Description
[1] ARC
Method Name
Description
.measureLineAngle()
Picks Types
Description
[1] stdGraphics
[2] stdGraphics
Settings
.description
.key
measureLineAngle.
.prompt
.input
Return Array
Description
[1] REAL
3:38
12 Series
Method Name
Description
.stdPosition(<prompt>)
Arguments
Description
<prompt>
Picks Types
Description
[1] stdPosition
Positional pick.
Settings
.description
.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()
Picks Types
Description
[1] stdPosition
[2] stdPosition
[3] stdPosition
Settings
.description
.key
circle3Pnts.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleDia3D()
Picks Types
Description
3:39
12 Series
[1] stdPosition
[2] stdPosition
[3] stdPosition
Settings
.description
.key
circleDia3D.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleRad3D()
Picks Types
Description
[1] stdPosition
[2] stdPosition
[3] stdPosition
Settings
.description
.key
circleRad3D.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleFixRad3D(<any>)
Arguments
Description
<any>
Picks Types
Description
[1] stdPosition
3:40
12 Series
[2] stdPosition
[3] stdPosition
Settings
.description
.key
circleFixRad3D.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleFixDia3D(<any>)
Arguments
Description
<any>
Picks Types
Description
[1] stdPosition
[2] stdPosition
[3] stdPosition
Settings
.description
.key
circleFixDia3D.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleDia2D(<any>)
Arguments
Description
<any>
Picks Types
Description.
3:41
12 Series
[1] stdPosition
[2] stdPosition
Settings
.description
.key
circleDia2D.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleRad2D(<any>)
Arguments
Description
<any>
Picks Types
Description
[1] stdPosition
[2] stdPosition
Settings
.description
.key
circleRad2D.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleFixRad2D(<any>,<a
ny>)
Arguments
Description
<any>
<any>
Picks Types
Description
3:42
12 Series
[1] stdPosition
Settings
.description
.key
circleFixRad2D.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
Description
<any>
<any>
Picks Types
Description
[1] stdPosition
Settings
.description
.key
circleFixDia2D.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleFillet(<any>)
Arguments
Description
<any>
Picks Types
Description
[1] positionLinear
[2] positionLinear
3:43
12 Series
Settings
.description
.key
circleFillet.
.prompt
Circle (Fillet).
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleTan3Lines()
Picks Types
Description
[1] positionLinear
[2] positionLinear
[3] positionLinear
Settings
.description
.key
circleTan3Lines.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleTanTan(<any>)
Arguments
Description
<any>
Picks Types
Description
[1] positionArc
[2] positionArc
[3] stdPosition
3:44
12 Series
Settings
.description
.key
circleTanTan.
.prompt
Circle (tangential).
.input
Return Array
Description
[1] ARC
Method Name
Description
.circlePntTan()
Picks Types
Description
[1] stdPosition
[2] positionArc
Settings
.description
.key
circlePntTan.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleFRadPntTan(<any>)
Arguments
Description
<any>
Picks Types
Description
[1] stdPosition
[2] positionArc
Settings
.description
3:45
12 Series
.key
circleFRadPntTan.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleFRadPntPnt(<any>)
Arguments
Description
<any>
Picks Types
Description
[1] stdPosition
[2] stdPosition
[3] stdPosition
Settings
.description
.key
circleFRadPntPnt.
.prompt
.input
Return Array
Description
[1] ARC
Method Name
Description
.circleDerive()
Picks Types
Description
[1] dbCircle
Settings
.description
.key
circleDerive.
.prompt
Circle (derived).
.input
3:46
12 Series
Return Array
Description
[1] ARC
Method Name
Description
.pointPnt()
Picks Types
Description
[1] stdPosition
Position pick.
Settings
.description
.key
pointPnt.
.prompt
.input
Return Array
Description
[1] POSITION
Method Name
Description
.linePntPnt()
Picks Types
Description
[1] stdPosition
[2] stdPosition
Settings
.description
.key
linePntPnt.
.prompt
Line.
.input
Return Array
Description
[1] LINE
Method Name
Description
.lineAngle(<any>)
Arguments
Description
3:47
12 Series
<any>
Picks Types
Description
[1] positionLinear
[2] stdPosition
[2] stdPosition
Settings
.description
.key
lineAngle.
.prompt
.input
Return Array
Description
[1] LINE
Method Name
Description
.lineDerive()
Picks Types
Description
[1] dbLine
Settings
.description
.key
lineDerive.
.prompt
Line (derive).
.input
Return Array
Description
[1] LINE
Method Name
Description
.linePntTan()
Picks Types
Description
[1] stdPosition
[2] positionArc
Settings
.description
3:48
12 Series
.key
linePntTan.
.prompt
.input
Return Array
Description
[1] LINE
Method Name
Description
.lineTanTan()
Picks Types
Description
[1] positionArc
[2] positionArc
Settings
.description
.key
.lineTanTan.
.prompt
.input
Return Array
Description
[1] LINE
Method Name
Description
.lineBisect()
Picks Types
Description
[1] positionLinear
[2] positionLinear
Settings
.description
.key
.lineBisect.
.prompt
Line (bisect).
.input
Return Array
Description
[1] LINE
3:49
12 Series
Method Name
Description
.lineTwoPlanes()
Picks Types
Description
[1] positionPlane
[2] positionPlane
Settings
.description
.key
lineTwoPlanes.
.prompt
Line (2 planes).
.input
Return Array
Description
[1] LINE
Method Name
Description
.lineShortest()
Picks Types
Description
[1] stdGraphics
[2] stdGraphics
Settings
.description
.key
.lineShortest.
.prompt
Measure distance.
.input
Return Array
Description
[1] LINE
Method Name
Description
.plane3Pnts()
Picks Types
Description
[1] stdPosition
3:50
12 Series
[2 stdPosition
[3 stdPosition
Settings
.description
.key
plane3Pnts.
.prompt
.input
Return Array
Description
[1] PLANE
Method Name
Description
.plane2Pnts(<position>)
Arguments
Description
<position>
Picks Types
Description.
[1] stdPosition
[2] stdPosition
Settings
.description
.key
plane2Pnts.
.prompt
.input
Return Array
Description
[1] PLANE
Method Name
Description
.planeDerive()
Picks Types
Description
[1] dbPlane
Settings
.description
.key
derivePlane.
3:51
12 Series
.prompt
Derive plane.
.input
Return Array
Description
[1] PLANE
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
= object EDGPICKPACKET()
= object EDGPICKPACKET()
= 'Measure distance'
3:52
12 Series
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'
3:53
12 Series
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
= object EDGPACKET()
-- Set Members
!packet.description
!packet.key
!packet.priority
= 'Test Packet'
= 'testPacket'
=1
='!action(!this.return[1])'
3:54
12 Series
-- 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'
3:55
12 Series
-- Define Packet
!packet
.
.
.
= object EDGPACKET()
= !this.elementMove()
= !this.elementBY()
3.11.4
3.12
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
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>)
positionLinear(<prompt>)
positionArc(<prompt>)
positionPlane(<prompt>)
Action
stdElement(<prompt>)
stdAny(<prompt>)
stdPpoint(<prompt>)
3:57
12 Series
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>)
stdGraphics(<prompt>)
facet
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
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
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
3:59
12 Series
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
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
.modifiable
BOOLEAN
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()
-- 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
-- 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
= 'TYPE eq |TUBING|'
= !valveLength + !clearance * 2
3.13.5
3.14
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
3:63
12 Series
Type
Action
.type
STRING
.tubing
STRING
.item
DBREF
.point
REAL
.pline
STRING
.aidType
STRING
Basic graphical
CYLINDER, etc.
.pickLine
POINTVECTOR
aid
type
picked,
e.g.
LINE,
3.15
Name
Type
Action
.vertexCount
REAL
.vertices
ARRAY
.lineCount
REAL
.lines
ARRAY
.facetCount
REAL
.facets
ARRAY
3:64
12 Series
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
.originalType
STRING
.position
POSITION
Derived position.
.direction
DIRECTION
Derived direction.
.pointVector
POINTVECTOR
.line
LINE
.plane
PLANE
.arc
ARC
.item
DBREF
.items
ARRAY
.ppoint
REAL
.pline
STRING
.tubing
STRING
Methods
There are several methods avail these are:
Name
Result
Action
.line()
MODIFIES
.arc()
MODIFIES
.plane()
MODIFIES
.getline()
LINE
3:65
12 Series
.getarc()
ARC
.getplane()
PLANE
3:66
12 Series
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 Outfitting.
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
x + y
Text1 + text2
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
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
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:
Logical constants. The constants available are: TRUE, ON, YES for true, and FALSE,
OFF, NO for false.
A:2
12 Series
A.2.1
Logical operators.
Logical functions.
Logical Operators
The logical operators available are:
Operator
Comments
AND
EQ, NE
NOT
OR
Note: The operators EQ, NE, LT, GT, LE and GE are sometimes referred to as comparator
or relational operators; NOT, AND and OR are sometimes referred to as Boolean
operators. Refer to Precision of Comparisons for tolerances in comparing numbers.
AND
Synopsis
Description
Side Effects
Example
A:3
-> logical
12 Series
EQ and NE
Synopsis
-> logical
-> logical
-> logical
-> logical
-> logical
-> logical
-> logical
-> logical
-> logical
-> logical
-> logical
-> logical
-> logical
-> logical
-> logical
-> logical
Description
Side Effects
Example
Errors
None.
A:4
12 Series
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
Side Effects
Example
Errors
None.
NOT
Synopsis
NOT log1
Description
Side Effects
None.
Example
Errors
None.
A:5
-> logical
12 Series
OR
Synopsis
OR log2
Description
-> logical
A.2.2
Side Effects
Example
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
Side Effects
None
Example
BADREF(TREF)
Errors
None.
A:6
-> logical
->
true if TREF=nulref
12 Series
Synopsis
Description
DEFined (variable_name)
-> logical
DEFined
(variable_name,number)
-> logical
UNDEFined (variable_name)
-> logical
UNDEFined (variable_name ,
number)
-> logical
None.
Example
DEFINED (
DEFINED (
DEFINED (
DEFINED (
DEFINED (
UNDEFINED
DEFINED (
Errors
None.
CREATED
Synopsis
CREATED
Description
Returns TRUE if the element has been created since the set
date.
Side Effects
None.
Example
Errors
None.
A:7
-> logical
12 Series
DELETED
Synopsis
DELETED
Description
Returns TRUE if the element has been deleted since the set
date.
Side Effects
None.
Example
Errors
None.
-> logical
EMPTY
Synopsis
EMPTY(text)
Description
Side Effects
None.
Example
Errors
None.
-> logical
MATCHWILD
Synopsis
Description
-> logical
-> logical
-> 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
Example
Errors
None.
MODIFIED
Synopsis
.-----------------------------------.
/
|
>- MODIFIED-(-+- attname -------*- DESCENDANTS --+-+-comma +-attname -
|
|
| |
|- DESCENDANTS -. |- SIGNIFICANT --| |
|
| |
| |
|- SIGNIFICANT--| |- PRIMARY ----- | |
|
| |
| |
|- PRIMARY -----| |- OFFSPRING-----| |
|
| |
| |
|- OFFSPRING ---| ---------------- |
|
|
|
|
|
|
|
|
|
---------------+--------------------+--+-- ) - OF - id
|
-
Description
this
element
and
everything
below
A:9
12 Series
None
Example
Q MODIFIED()
Q MODIFIED(POS,ORI)
Q MODIFIED(P1 POS)
Q MODIFIED(GEOM
DESCENDANTS
Q MODIFIED(PRIMARY)
Q MODIFIED() OF /
PIPE1
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
Side Effects
None.
A:10
-> logical
12 Series
Example
Errors
UNSET( DESC )
UNSET(CRFA)
None.
VLOGICAL
VLOGICAL is used for the late evaluation of variables.
Synopsis
Description
VLOGICAL ( variable_name ))
-> logical
VLOGICAL ( variable_name ,
number)
-> logical
A.2.3
Side Effects
Example
Errors
None.
Outfitting 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
A.3
A.3.1
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.
Numeric operators.
Numeric functions.
A:12
12 Series
A.3.2
A.3.3
Operator
Comments
Addition.
Subtraction.
Multiplication.
Division.
Synopsis
A.3.4
number + number
-> number
number - number
-> number
+ number
-> number
- number
-> number
Description
Side Effects
Example
1
1
+
-
Errors
+
1
1
2 -> 3.0
2 -> 1.0
-> 1.0
-> -1.0
Synopsis
Description
number * number
-> number
number / number
-> number
A:13
12 Series
A.3.5
Side Effects
Example
2 * 3 -> 6.0
2 / 3 -> 0.666666666
Errors
Divide by zero.
Comments
ABS ( number1 )
ACOS ( number1 )
ASIN ( number1 )
ATAN ( number1 )
ALOG ( number1 )
ARRAYSIZE ( variable-name
)
ARRAYWIDTH( variable-name
)
INT ( number1 )
SIN ( number1 )
COS ( number1 )
TAN ( number1 )
LENGTH ( text1 )
LOG ( number1 )
A:14
12 Series
Function
Comments
NEGATE
NINT ( number1 )
REAL ( text1 )
SQRT ( number1 )
VVALUE ( variable-name )
ABS
Synopsis
ABS ( number1 )
Description
Side Effects
None.
Example
Errors
None.
-> number
Synopsis
ASIN ( number1 )
-> number
ACOS ( number1 )
-> number
ATAN ( number1 )
-> number
-> number
A:15
12 Series
Description
Side Effects
None.
Example
Errors
ALOG
Synopsis
ALOG ( number1 )
Description
Side Effects
Example
Errors
-> number
ARRAY
Synopsis
Description
Side Effects
None
Example
ARRAY(e100 )
Errors
None.
-> 100
-> number
ARRAYSIZE
Synopsis
ARRAYSize ( variable-name )
Description
Side Effects
A:16
-> number
12 Series
Example
ARRAYSIZE(!array)
Errors
-> 2.0
Synopsis
ARRAYWIDTH ( variable-name )
Description
Side Effects
None.
Example
!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
Synopsis
Description
Side Effects
None.
Example
Errors
None.
A:17
-> text
12 Series
Synopsis
SINe ( number1 )
-> number
COSine ( number1 )
-> number
TANgent ( number1 )
-> number
Description
Side Effects
None.
Example
Errors
INT
Synopsis
INT ( number1 )
Description
Side Effects
None.
Example
INT ( 1.6 )
INT ( -23.7 )
Errors
Integer overflow.
-> number
-> 1.0
-> -23.0
LENGTH
Synopsis
LENgth ( text1 )
Description
Side Effects
None.
Example
Errors
None.
-> number
ALOG
Synopsis
LOG ( number1 )
Description
A:18
-> number
12 Series
Side Effects
None.
Example
Errors
Negative arguments.
MATCH
Synopsis
Description
Side Effects
None.
Example
Errors
None.
-> number
Synopsis
-> number
-> number
Description
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
Side Effects
None.
Example
Errors
None.
A:19
-> number
12 Series
NINT
Synopsis
NINT ( number1 )
Description
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
Side Effects
None.
Example
Errors
None..
-> integer
REAL
Synopsis
REAL ( text1 )
Description
-> number
Example
Errors
A:20
12 Series
POWER
Synopsis
Description
Side Effects
Example
Errors
non-positive
-> real
second
argument
Synopsis
SQrt ( number1 )
Description
Side Effects
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
Description
element
Example
Errors
A.3.6
Real Arrays
Real array expressions can contain attributes of type real array, for example: DESP.
A.4
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 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.
A:22
12 Series
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:
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
A.5.1
N 45 W 20000 U 1000
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 (Outfitting Only).
A.5.2
A:23
12 Series
answer is required relative to the owner axis system and this is taken as the default. For
example:
Q POS
Q POS OF /EQUIP1
If we require the result in some other axis system then the WRT keyword is used. For
example:
Q POS WRT /*
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)
A ZONE at (100,0,0)
An EQUIPMENT at (100,0,0)
With orientation N IS E
A BOX at (-100,0,0)
A:24
12 Series
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
Site
Zone
Equipment
Box
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
Comments
A SITE at (0,0,0)
A ZONE at (100,0,0)
An EQUIPMENT at (100,0,0)
With orientation N IS E
A BOX at (-100,0,0)
Figure A:2.
The result of Q (N 100 WRT /* FROM /BOX1), shown as in , will depend on the
current element.
Location
Result
Equipment
(100,200,0).
Note: The default axis for the result is the Zone.
Box
A:26
12 Series
Result
(100,0,0)
Equipment
(0,0,0)
Box
(0, -100, 0), because the axis for the result is the
Equipment.
Figure A:3.
A.5.4
Varying WRT
Location
Result
(0,100,0)
Equipment
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
For positions entered by the user, only those coordinates which are given by the user are
defined. For example:
N10U3
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
E10N10 GT E0N0
E10N0 GT E0N0
E10N0 GT E0U100
N10 EQ W4D7
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
A.5.6
Direction
The basic ways of defining a direction are:
N 45 W
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.
A:29
12 Series
The CLOSEST keyword, which will find the closest element in a particular direction.
The syntax is:
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:
The AXES keyword, which will allow you to use P-points to specify orientations.
A:30
12 Series
.----<--------.
/
|
>-- AXES --*--- PArrive ---|
|
|
|--- PLeave ----|
|
|
|--- PTail -----|
|
|
|--- HHead -----|
|
|
|--- HTail -----|
|
|
--- PPOINT n --+-- OF - <gid> ---->
An example is:
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
Text operators
Text functions
Text Operator
The text operator available is +, used for concatenation.
Synopsis
Description
Side Effects
None.
Example
Errors
A:31
-> text
12 Series
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
Description
-> text
None.
Example
Errors
None.
BEFORE
Synopsis
Description
Side Effects
None.
Example
Errors
None.
A:32
-> text
12 Series
DISTANCE
Synopsis
DISTance ( number1 )
DISTance( number1, logical1,
logical2, logical3, number2,
logical4)
Description
-> text
-> text
Outfitting
For both US and Outfitting formats the following rules are
observed:
A:33
12 Series
Side Effects
None.
Example
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
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
A:34
12 Series
Synopsis
UPCase ( text1 )
-> text
LOWCase ( text1 )
-> text
Description
Side Effects
None.
Example
Errors
None.
PART
Synopsis
Description
PART(text1, number1)
-> text
PART(text1, number1 ,
text2)
-> text
Side Effects
None.
Example
Errors
None.
REPLACE
Synopsis
A:35
12 Series
Description
Side Effects
None.
Example
Three arguments:
A:36
12 Series
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(AAAAAA, A, B, 10 )
AAAAAA
->
REPLACE(AAAAAA, A, B, 2, 8)
ABBBBB
->
A:37
->
12 Series
STRING
Synopsis
Description
-> text
-> text
-> text
Numeric
Logical
Id
Position
Direction
Orientation
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
SUBSTRING
Synopsis
Description
-> text
-> text
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
-> text
-> text
Side Effects
None.
A:39
12 Series
Example
Errors
None.
VTEXT
VTEXT is used for the late evaluation of variables.
Synopsis
Description
VTEXT ( variable-name )
-> text
VTEXT ( variable-name ,
number )
-> text
Side Effects
Example
Errors
A.7
A:40
12 Series
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 ).
Comments
NONE
UNKN
MM
INCH
SQIN
CUIN
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
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
(1.000002 GT 1) is TRUE.
Position
Direction or Orientation
One of the operands or arguments of a function (except some cases of AND and OR) is
undefined.
A:42
12 Series
An element is undefined (e.g. OWNER when the current element is the WORLD).
Two position constants are compared with GT, GE, LT or LE and they have no common
coordinates (e.g. N10 EQ E5).
Results in FALSE.
NE
Results in TRUE.
OR , AND
A:43
12 Series
A:44
12 Series
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:202
Area view gadget . . . . . . . . . . . . . . . . 2:202
Area view setup mode . . . . . . . . . . . . 2:202
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:36
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
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:108
MULTIPLY . . . . . . . . . . . . . . . . . . . . . . A:13
Gadget
2D Screen Position . . . . . . . . . . . . . 2:10
Anchoring . . . . . . . . . . . . . . . . . . . . . 2:7
BAR . . . . . . . . . . . . . . . . . . . . . . . . 2:26
BUTTON . . . . . . . . . . . . . . . . . . . . . 2:30
COMBOBOX . . . . . . . . . . . . . . . . . 2:38
CONTAINER . . . . . . . . . . . . . . . . . 2:42
Docking . . . . . . . . . . . . . . . . . . . . . . 2:7
FRAME . . . . . . . . . . . . . . . . . . . . . . 2:70
LINE . . . . . . . . . . . . . . . . . . . . . . . . 2:78
LIST . . . . . . . . . . . . . . . . . . . . . . . . 2:90
OPTION . . . . . . . . . . . . . . . . . . . . 2:116
PARAGRAPH . . . . . . . . . . . . . . . . 2:120
Positioning . . . . . . . . . . . . . . . . . . . . 2:8
RTOGGLE . . . . . . . . . . . . . . . . . . 2:163
SELECTOR . . . . . . . . . . . . . . . . . 2:170
SLIDER . . . . . . . . . . . . . . . . . . . . 2:175
Syntax Graphs . . . . . . . . . . . . . . . . . 2:6
Tagwidth . . . . . . . . . . . . . . . . . . . . . 2:10
TEXTPANE . . . . . . . . . . . . . . . . . 2:190
TOGGLE . . . . . . . . . . . . . . . . . . . 2:192
Width and Height . . . . . . . . . . . . . . . 2:9
GE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A:5
Graphical Selection . . . . . . . . . . . . . . . . 2:74
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:76
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:115
Object
ALERT . . . . . . . . . . . . . . . . . . . . . . 2:11
ARC . . . . . . . . . . . . . . . . . . . . . . . . 2:12
ARRAY . . . . . . . . . . . . . . . . . . . . . 2:21
BANNER . . . . . . . . . . . . . . . . . . . . 2:25
BLOCK . . . . . . . . . . . . . . . . . . . . . . 2:28
BOOLEAN . . . . . . . . . . . . . . . . . . . 2:28
BORE . . . . . . . . . . . . . . . . . . . . . . . 2:29
Classification . . . . . . . . . . . . . . . . . . 2:1
COLLECTION . . . . . . . . . . . . . . . . 2:34
COLUMN . . . . . . . . . . . . . . . . . . . . 2:35
DATEFORMAT . . . . . . . . . . . . . . . 2:43
DATETIME . . . . . . . . . . . . . . . . . . . 2:44
DB . . . . . . . . . . . . . . . . . . . . . . . . . 2:46
DBREF . . . . . . . . . . . . . . . . . . . . . . 2:48
DBSESS . . . . . . . . . . . . . . . . . . . . 2:49
DIRECTION . . . . . . . . . . . . . . . . . . 2:49
EXPRESSION . . . . . . . . . . . . . . . . 2:51
FILE . . . . . . . . . . . . . . . . . . . . . . . . 2:52
FMSYS . . . . . . . . . . . . . . . . . . . . . 2:54
FORM . . . . . . . . . . . . . . . . . . . . . . 2:57
FORMAT . . . . . . . . . . . . . . . . . . . . 2:66
LINE . . . . . . . . . . . . . . . . . . . . . . . . 2:79
LINEARGRID . . . . . . . . . . . . . . . . . 2:88
LOCATION . . . . . . . . . . . . . . . . . . 2:95
Index page ii
12 Series
MACRO . . . . . . . . . . . . . . . . . . . . . 2:97
MDB . . . . . . . . . . . . . . . . . . . . . . . . 2:97
MEASURE . . . . . . . . . . . . . . . . . . . 2:99
MENU . . . . . . . . . . . . . . . . . . . . . . 2:101
NUMERICINPUT . . . . . . . . . . . . . 2:114
ORIENTATION . . . . . . . . . . . . . . . 2:119
PLANE . . . . . . . . . . . . . . . . . . . . . 2:122
PLANTGRID . . . . . . . . . . . . . . . . . 2:126
POINTVECTOR . . . . . . . . . . . . . . 2:134
POSITION . . . . . . . . . . . . . . . . . . 2:136
POSTEVENTS . . . . . . . . . . . . . . . 2:141
PROFILE . . . . . . . . . . . . . . . . . . . 2:144
PROJECT . . . . . . . . . . . . . . . . . . . 2:142
RADIALGRID . . . . . . . . . . . . . . . . 2:153
REAL . . . . . . . . . . . . . . . . . . . . . . 2:155
REPORT . . . . . . . . . . . . . . . . . . . 2:160
SESSION . . . . . . . . . . . . . . . . . . . 2:173
STRING . . . . . . . . . . . . . . . . . . . . 2:177
TABLE . . . . . . . . . . . . . . . . . . . . . 2:184
TEAM . . . . . . . . . . . . . . . . . . . . . . 2:186
Type Details . . . . . . . . . . . . . . . . . . 2:11
UNDOABLE . . . . . . . . . . . . . . . . . 2:194
UNIT . . . . . . . . . . . . . . . . . . . . . . . 2:195
USER . . . . . . . . . . . . . . . . . . . . . . 2:197
XYPosition . . . . . . . . . . . . . . . . . . 2:208
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
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:165
Manager . . . . . . . . . . . . . . . . . . . . 2:167
SINE . . . . . . . . . . . . . . . . . . . . . . . . . . . A:18
SQRT . . . . . . . . . . . . . . . . . . . . . . . . . . A:21
STATE . . . . . . . . . . . . . . . . . . . . . . . . 2:184
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:127
PMLSECURELOGIN . . . . . . . . . . . . . 2:132
PMLUSERLOGIN . . . . . . . . . . . . . . . . 2:133
Positions
comparing . . . . . . . . . . . . . . . . . . . . A:27
POWER . . . . . . . . . . . . . . . . . . . . . . . . A:21
Prompts
Change . . . . . . . . . . . . . . . . . . . . . . 3:9
Published Interface . . . . . . . . . . . . . . . 3:15
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:198
View
the Stack . . . . . . . . . . . . . . . . . . . . 3:10
VIEW Gadget
12 Series
W
WRT . . . . . . . . . . . . . . . . . . . . . . . . . . . A:23
Index page iv
12 Series