Add a New Check Function
- Last UpdatedNov 14, 2025
- 3 minute read
Although the Data Checker utility is used by AVEVA to supply standard data checking facilities in PDMS, its main purpose is to allow you to add your own checking tools.
The utility is controlled by creating configuration files. These configuration files will tell the system what checks are available, and which elements to select for checking. In order to keep standard (AVEVA) and user checking functions separate, they are configured in separate configuration files.
The standard AVEVA-supplied checks for PDMS data are configured in a file called com-checks.pmldat, in the product directories. This file must not be modified.
User-supplied checking tools for Design data must be configured in files named des-checks.pmldat in the following directories:
-
The PDMSDFLTS directory holds company-wide checks, which are available to all projects.
-
The ABCDFLTS directory (where ABC is the project name) holds checks specific to one project.
-
The PDMSUSER directory holds checks specific to a single user.
Entries in all des-checks.pmldat files available to a user will be combined together on the Checker window.
The format of des-checks.pmldat files is described by example below. The commands in the file must be valid PML syntax, and all information must be provided for each checking function.
The Checker file in the following example contains two checks:
-
The first check identifies any panels that have incorrectly defined boundary curves. It does so by checking for panels having fewer than three vertices, or zero-length edges.
-
The second check looks for structural elements that do not obey a naming convention. The naming convention for this example is that the names of all SCTN, PANEL, FRMW and SBFR elements must start with the first two letters of a UDA :PRODNO, which is set at ZONE level.
-- Data file for Design Checker Utility
--
Comment lines begin --
--Checks for panel zero length edges, backtracks, and <3 vertices
!Check = object CHECK()
Declaration of new check entry
!Check.Name = 'LOOPCHECK'
Name of check function
!Check.Title = 'Check Panel Boundary'
Title appears in Check selection box
!Check.Class = 'Steelwork'
Add this check function to this class
!Check.Group = 'Panels'
Add this check function to this group
!Check.Types = 'PANE'
Type of element to be checked
!Check.Rule = ''
Rule for filtering selected element types (none)
!Check.Function = '!!EdgeCheck'
Name of Check Function
!Check.Module = 'Design'
PDMS module using this function
!Check.FileType = '$1'
Mandatory line for checker utility
!!AddCheckerCheck(!Check)
Adds this check to the list of checks
--
-- Check that primary steel element names begin with the first two letters of the Production Number in :PRODNO UDA on ZONE
!Check = object CHECK()
Declaration of new check entry
!Check.Name = 'STRUCTNAME'
Check name
!Check.Title = 'Check Steelwork Names’
Title appears in Check selection box
!Check.Class = 'Steelwork'
Class
!Check.Group = 'Administration'
Group
!Check.Types = 'PANE SCTN FRMW SBFR'
List of element types to check
!Check.Rule = 'FUNC OF ZONE eq |PS|'
Selection filter
!Check.Function = '!!PSNameCheck'
Name of Check Function
!Check.Module = 'Design'
Used in Design
!Check.FileType = '$1'
Mandatory Line
!!AddCheckerCheck(!Check)
Add to the list of Checks
-
!Check.Title identifies the check in the Checks selection window and in the Failed results list.
-
!Check.Class and !Check.Group determine the Classes and Groups descriptions for the check function.
-
!Check.Types is a list of element types that will be selected for this test. This list will be filtered by the rule in !Check.Rule. Only elements from the !Check.Types list which obey any conditions specified in !Check.Rule will be presented to the check function by the Checker utility. The database reference (DBREF object) of a selected database element is passed to the check function. The check function must be written to handle any elements that might be selected and passed to it. If the check function itself fails, this will be reported in the Failed results list.
-
!Check.Function is set to the name of the check function, which must include the !! at the beginning of the name. This function must exist in the PMLLIB search path. The filename of the function will be the same as the function name, but all in lower case with a .pml filename extension; for example, the !!PSNameCheck function will be defined in file psnamecheck.pml.
-
!Check.Module is set to the PDMS module in which this check will run.
-
The !Check.FileType = '$1' line is mandatory.
-
The !!AddCheckerCheck(!Check) line adds the details of this check to the list of available checks.