Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

Hull and Outfitting

Upgrading a Project

  • Last UpdatedDec 04, 2025
  • 15 minute read

After you have set the appropriate environment variables, some upgrade macros must be run on the project which:

  • Update catalogues to include the Pline representation of the Cardinal Points.

  • Install the UDAs which requires.

    Note:
    This process can be repeated as the supplied software performs the correct checks to see whether the project needs updating.

Cardinal Point Plines

The standard supplied steelwork catalogue must be upgraded to include the Pline representation of the AVEVA Bocad Steel Interface Cardinal Points. Refer to for further information.

Note:
This upgrade process works only for the supplied catalogues.

You may upgrade the catalogues by performing the following actions:

  1. Enter the Paragon or Catalogue module with write access to all relevant catalogue databases.

  2. In a command window run the upgrade macro by the following command:

  3. call !!bocCataUpgrade( )

  4. The macro suite will check to see if this upgrade has already been executed and create or modify the original set of Cardinal Points with an updated set.

  5. Exit from the module, saving the changes.

There are 15 Cardinal Points defined in the AVEVA Bocad Steel Interface. The interface uses only 14 of them: the Shear Centre (Cardinal Point 15) is not a practical reference point to use in these circumstances. Of the remaining Cardinal Points the interface tries to use those between 1 and 10.

If you have not used Plines representing Cardinal Points to place Linear Members in the base product, during the Export or Import processes an attempt is made to map existing Plines onto Cardinal Points. This mapping is performed using information stored in a configuration file, bocloadcpdata.pmlfnc in the PMLLIB\Bocad\functions folder in the installation folder. This basic Pline mapping is as follows:

Symmetric Sections about Y Axis

Pline

mapped to

Pline

which is

Cardinal Point

RBOS

SNFA

1

BOS

SNFB

2

SS

SNFB

2

LBOS

SNFC

3

RIGH

SNFD

4

NARO

SNFD

4

AA

SNFD

4

MM

SNFF

6

NALO

SNFF

6

LEFT

SNFF

6

RTOS

SNFG

7

GG

SNFH

8

TOS

SNFH

8

LTOS

SNFI

9

NA

SNFJ

10

Angles

Pline

mapped to

Pline

which is

Cardinal Point

TOAX

SNFA

1

TOAY

SNFA

1

RTTA

SNFC

3

LBOA

SNFG

7

NA

SNFJ

10

NAT

SNFK

11

NAL

SNFL

12

Channels

Pline

mapped to

Pline

which is

Cardinal Point

LTOC

SNFA

1

RTOC

SNFC

3

FOC

SNFD

4

ROC

SNFF

6

LBOC

SNFG

7

RBOC

SNFI

9

NA

SNFJ

10

TOC

SNFK

11

BOC

SNFN

14

For further explanation of the reasons why the mapping may seem inconsistent, see the section describing the assumed default profile orientations in the file and locations and the Structural Design User Guide. In particular the user’s attention is drawn to the different handedness of the coordinate systems as illustrated below.

The main differences arise from the mapping of the profile orientations in the Catalogue onto the agreed format. The difference is most apparent in channel and angle profiles. The diagram below illustrates the mappings of the Plines to Cardinal Points.

Note:
The different Y directions to match the default angle orientations in each system.

If you want to create profiles, the user must provide a Pline set similar to the ones provided here to map onto the Cardinal Point Pline set. If they are named differently, there must be a mapping to Cardinal Points as shown above. This is performed in the file bocloadcpdata.pmlfnc in the PMLLIB\bocad\functions folder in the installation folder. Further, the user may have to manage the orientation of the profile with regard to the intermediate arrangement by using the Profile Orientation mapping file (External Mapping Files).

A sample extract of the Pline mapping in the file bocloadcpdata.pmlfnc is given here.

  -- Cardinal point Pkeys

  !!BOCCPPkeys.delete( )

  handle( 2,751 )

    -- Variable does not exist

  endhandle

  !!BOCCPPkeys = ARRAY( )

  !!BOCCPPkeys[ 1 ]  = |SNFA|

  !!BOCCPPkeys[ 2 ]  = |SNFB|

  !!BOCCPPkeys[ 3 ]  = |SNFC|

  -- Angles

  !!BOCCPBMTOAX      = |SNFA|

  !!BOCCPBMTOAY      = |SNFA|

  !!BOCCPBMRTTA      = |SNFC|

  !!BOCCPBMLBOA      = |SNFG|

In the above example, the Pline, whose Pkey is TOAX, is mapped to the Pline whose Pkey is SNFA and which is equivalent to the Cardinal Point number 1; RTTA is equivalent to SNFC (Cardinal Point 3).

Note
You must not alter in any way the array which maps Pline names to Cardinal Point Pkey values, that is the array !!BOCCPPkeys.

Thus, if you have a new Pline, whose Pkey is RTOP, which is to be equivalent to Cardinal Point 3, you must insert a line similar to the following in the mapping list:

  !!BOCCPBMRTOP      = |SNFC|

 that is  in general, the format is¼

  !!BOCCPBM<Pline PKEY> = |SNF[A-N]|

You will then be able to use the RTOP Pline for their own positioning functions, but the interface will know that it is equivalent to the SNFC Pline (that is Cardinal Point 3). Thus, importing new items positioned using Cardinal Point 3 will appear in the model to have been positioned using the RTOP Pline.

Note:
Pline mapping on Import is subject to the constraint that the map will take the first equivalent it finds. In some circumstances the Pline TOAY (Cardinal Point 1) may be Imported as Pline TOAX (also Cardinal Point 1) because the TOAX mapping is the first suitable one the system finds. Unfortunately, there is no way that the interface can determine which Pline the system originally used.

Update Catalogues not supplied by AVEVA Solutions Limited

Note
The naming conventions and database structure for the Pline sets should be similar to those used in the supplied Catalogues.

This section gives details on how you can update the steel catalogues to include the Plines necessary for the interface.

The macro file, bocusercataupgr.pmlfnc in the bocad\dflts\user\upgrade folder in the user data folder provides the basis on which the user may build their own mechanism for updating the catalogues automatically. In order to use this function, the whole containing user folder should be copied to the user's own work space as defined by user's work area and modified there. When the changes are complete the user should perform a PML REHASH ALL operation in a command window. We have indicated where you may have to modify this file with lines prefixed by:

>>>> User¼

The macro must be run for each catalogue (CATA element) you want to update. You may have to modify it in a different way for each catalogue. (Details about how the file should be modified are given in following sections.)

You can write a macro which will call all the modified files in turn and so upgrade all their catalogues at once. The macro takes one argument which is the DBREF (the database reference number) of the catalogue to be updated.

To update individual catalogues, run the upgrade macro as follows:

  1. Enter the module with write access to all the relevant catalogue databases.

  2. Set the catalogue (CATA) the user wants to update as the current element and give the command in a Command Window:

    call !!bocUserCataUpgr( !!CE )

  3. Repeat for as many catalogues as required.

  4. Save work and exit from AVEVA Bocad Steel Interface.

    Generic Catalogue Shapes

    The supplied catalogue contains profiles of 8 standard generic shapes which are detailed in the manual Structural Design User Guide. That manual explains the parameterization method for these shapes. As a result, there are 8 generic macros in the PMLLIB\bocad\upgrade folder in the installation folder, one for updating the Pline set of each standard shape. These are:

    Profile Shape

    Macro

    Tee shape

    bocupgradet.pmlfnc

    I shape

    bocupgradei.pmlfnc

    O, Tube, CHS shape

    bocupgradeo.pmlfnc

    C, Channel shape

    bocupgradec.pmlfnc

    L, Angle shape

    bocupgradel.pmlfnc

    RHS shape

    bocupgraderhs.pmlfnc

    Japanese Bulb shape

    bocupgradejbulb.pmlfnc

    DIN Bulb shape

    bocupgradedbulb.pmlfnc

    If you have other additional shapes, or have parameterized them in a different way from the supplied catalogues, the user will have to write their own macro for their own shape based on the most suitable one provided. Please take note of the catalogue profile orientation with regard to the format.

    Customize the Pline Generating Macros

    In order to customize the generic Pline generating macros listed above, or to create their own, you will need to understand fully how the profile in question is parameterized in their catalogue database, and how the profile shape is positioned relative to the Neutral Axis and the X/Y origin in the catalogue. Below is an extract of the supplied bocupgradel.pmlfnc macro, including parts of the header.

    ------------------------------------------------------------------------

    --

    -- Significant Catalogue Parameters:

    --  [#] [Description]                  [Specials]

    --   1  Vertical leg length (Y)

    --   2  Horizontal leg length (X)

    --   3  Thickness                      Vertical leg   (JIS-PTSS-JANG)

    --   4  Cy (X offset)

    --   5  Cx (Y offset)

    --   6  Unit weight                    Horizontal leg (JIS-PTSS-JANG)

    --

    ------------------------------------------------------------------------

    -- Define function

    define function !!bocUpgradeL( ) is REAL

      -- initialization

      !error  = !!BOCCPErrOK

      !origin = ( ref )

      -- Build map of existing PLINes

      !plineMap = ARRAY()

      var !coll collect all PLIN with (substring((PKEY ),1,3) eq |SNF|)for CE

      if( not !coll.empty( ) )then

          -- Build a map indexed on PKEY - don't delete them

          do !i values !coll

              $!i

              !pkey = PKEY

              var !pkeyString hash( |$!pkey| )

              !index = !pkeyString.real( )

              !plineMap[ !index ] = !i.dbref( )

          enddo

      endif

      -- Create all new Aveva Bocad PLINes necessary

      !pkeysHashed = ARRAY( )

      do !i to !!BOCCPPkeys.size( )

          !pkey = !!BOCCPPkeys[ $!i ]

          var !pkeyString hash( |$!pkey| )

          !index = !pkeyString.real( )

          !pkeysHashed[ $!i ] = !index

          -- Try going to PLINe called SNF[A-N]

          $!plineMap[ $!index ]

          handle( 2,109 )( 2,752 )

            -- Failed - create it

            NEW PLIN $!!BOCCPData

            PKEY $!pkey

            !ref = ( ref )

            !plineMap[ !index ] = !ref

          endhandle

      enddo

      -- Set Pline dimensions

      !YOff  =  |( ATTRIB CPARA[ 4 ] )|

      !nYOff = |( ATTRIB CPARA[ 4 ] - ATTRIB CPARA[ 1 ] )|

      !YCOff = |( ATTRIB CPARA[ 4 ] - ( ATTRIB CPARA[ 1 ] / 2.0 ) )|

      !XOff  =  |( ATTRIB CPARA[ 2 ] - ATTRIB CPARA[ 5 ] )|

      !XCOff = |( ( ATTRIB CPARA[ 2 ] / 2.0 ) - ATTRIB CPARA[ 5 ] )|

      !nXOff = |( -1.0 * ATTRIB CPARA[ 5 ] )|

      -- All requisite PLINes exist now

      -- Cardinal point 1  - Pkey = SNFA

      $!plineMap[ $!pkeysHashed[ 1 ] ]

      PX $!nXOff PY $!YOff PLAX -Y

      -- Cardinal point 2  - Pkey = SNFB

      $!plineMap[ $!pkeysHashed[ 2 ] ]

      PX $!XCOff PY $!YOff PLAX -Y

      -- Cardinal point 3  - Pkey = SNFC

      $!plineMap[ $!pkeysHashed[ 3 ] ]

      PX $!XOff PY $!YOff PLAX ‑Y

    ¼ and so on.

    The structure of all the supplied macros is similar.

    Note:
    We record our interpretation of the catalogue parameters in the header.

    The macro first builds a list of any Plines that already exist. Any Plines that are not available and are needed by the AVEVA Bocad Steel Interface as listed in the !!BOCCPData array, are then created. Doing this makes sure the latest configuration is being used.

    We then need to define the Cardinal Point Pline location parameters related to the method of catalogue parameterization. These are Xoff, YOff, nYOff and nXOff. We also need to work out the location of the geometric centre relative to the method of profile definition. These location parameters are XCOff and YCOff. The user will see above that the definition is in terms of a text string which describes a formula. Later on in the macro, this text string is inserted into the command line. This use of PML allows the user to insert formulae into the Pline definition, rather than the immediately evaluated formula.

    Using these Pline location parameters, all the Cardinal Point Plines required for the application can be located. Refer to for further information.

    If you are extending or modifying the application, all you should need to do is to modify the part of the macro which calculates the location parameters. You should, however, pay close attention to the default profile orientations within AVEVA Bocad Steel Interface.

    The structure of the upgrade process allows you to run the macro during the project as well as at project initiation. Any database relationships that refer to the old Plines will be maintained, for example, dimensions.

    Map Pline Set Names to Profile Shapes

    Once you have defined their generic shapes the user needs to be able to map the Pline set names to that shape. This is done by filling in a mapping file of PML objects in the bocusercataupgr.pmlfnc macro file. The first set in the UserMap array may have to be modified, and the user may have to extend the list for their own additional specific shapes.

    For example, a complete mapping for a Pline set consists of the following:

      -- Map Shapes to generic update macros

        !TShape             = |!!BOCUpgradeT( )|

        !IShape             = |!!BOCUpgradeI( )|

        !OShape             = |!!BOCUpgradeO( )|

        !CShape             = |!!BOCUpgradeC( )|

        !LShape             = |!!BOCUpgradeL( )|

        !RHSShape           = |!!BOCUpgradeRHS( )|

        !JBULBShape         = |!!BOCUpgradeJBULB( )|

        !DBULBShape         = |!!BOCUpgradeDBULB( )|

    -- >>>> User to add any specific shapes here

    --    !USERAShape         = |!!BOCUpgradeUSERA( )|

      -- >>>> User Map definition between PTSS and Shape code

        !UserMap = ARRAY( )

        !UserMap[ 1 ]         = object BOCMAPOBJ( )

        !UserMap[ 1 ].Name   = |/USER-PTSS-I|

        !UserMap[ 1 ].Macro   = !IShape

    This means that the Pline set (PTSS) named /USER-PTSS-I is to be modified using the PML macro represented by the variable !Ishape. Further up, the user can see that the !IShape variable is associated with the macro !!bocUpgradeI( ).

    Catalogue Upgrade Step-by-Step

    Below are instructions to create and upgrade the Catalogue based on the requirement to create a new profile shape in both the base product and AVEVA Bocad Steel. Any operations that require changes to system mapping files, should be preceded by backing up the files first.

    New Profile Shape Definition

    With each package you will need to create the new 2D profile shape. Determine the generic shape and parameterization best suited to the required profile.

    At this point do not include Plines in the Pline set just place other Plines the user will find useful and name them accordingly. Do not include any Plines with PKEY values SNFA to SNFN as these will be added in the upgrade process. Build the new catalogue, recording which parameters apply to which dimension.

    In AVEVA Bocad Steel create the profile such that its default orientation will be the same as that in the base product when laid out from start to end.

    With predefined profiles, such as unequal angles, the default orientation may be different. In this case, the user may need to use mirroring and/or rotation transformations to get to the correct "starting position". Mirroring represents a transformation about the Y axis: rotation is about the Z axis, following the "Right Hand Screw Rule". Keep a record of these necessary transformations as they will go into the orientation mapping file.

    On the 2D profile in each package locate where the Cardinal Points and their Pline equivalents will be. In the AVEVA Bocad Steel Interface module, place any other Plines that the user may find useful. Record the correspondence between Cardinal Points and Pline names. Remember also that any mirroring and rotation will affect the Cardinal Point locations.

    Note:
    The coordinate system in the base product is right handed, whereas in the file it is left handed. The Cardinal Point : Pline equivalencing by superposition is illustrated above for an unequal angle profile. Using this kind of diagram the user will be able to determine the mappings between Plines and Cardinal Points.

    If the new profile is not one of the existing shapes, the user may need to assign a new profile integer shape code to it for use in the profile mapping file.

    Also, if the new profiles are for a new country standard, the user may need to assign a new country code to this. This three letter abbreviation is stored in the internal steel standards file. This abbreviation is also used in the profile mapping file.

    Upgrade the Catalogue for the AVEVA Bocad Steel Interface

    Upgrading the Catalogue involves adding Plines to be equivalent to the Cardinal Points.

    In Paragon determine the parameterized geometry and Pline positioning for the Cardinal Points.

    If you are extending an existing generic shape use the existing upgrade file provided. Or if the profile can be based on an existing generic shape, use a customized copy of the bocupgrade<*>.pmlfnc macro. Modify the profile upgrade macro to account for the new parameterization to create and locate the Plines for the Cardinal Points. Use an existing example as a guide.

    Any new Pline names, as set in the PKEY attribute, must be mapped to Cardinal Points in the bocloadcpdata.pmlfnc macro. PML is a language that enables the user to construct variable names from string components and then use them. This is how the Pline mapping is managed. Inspect the current file for directions on how to extend this file. Modify it, then run it.

    -- Cardinal point Pkeys

    !!BOCCPPkeys.delete( )

    handle( 2,751 )

      -- Variable does not exist

    endhandle

    !!BOCCPPkeys = ARRAY( )

    !!BOCCPPkeys[ 1 ] = |SNFA|

    !!BOCCPPkeys[ 2 ] = |SNFB|

    !!BOCCPPkeys[ 3 ] = |SNFC|

    -- Angles

    !!BOCCPBMTOAX = |SNFA|

    !!BOCCPBMTOAY = |SNFA|

    !!BOCCPBMRTTA = |SNFC|

    !!BOCCPBMLBOA = |SNFG|

    Run boccataupgrade.pmlfnc macro for upgrading standard catalogues.

    Inspect the macro bocusercataupgr.pmlfnc to extend any lists to include the new profile shape, associating it with any new profile upgrade macro. Once modified, perform a PML REHASH ALL command in a Command window, if necessary, then run this macro.

    !Ishape = |bocupgradei()|

    !UserMap[ 1 ] = object BOCMAPOBJ( )

    !UserMap[ 1 ].Name = |/USER-PTSS-I|

    !UserMap[ 1 ].Macro = !Ishape

    Modify the Orientation Mapping File

    For the chosen profile in the chosen standard, if any transformations are to be applied to convert from the base product to the default system, they are to be recorded in the orientation mapping file. If the profile requires no transformations, it should not be listed in this file. In the example below, the British type 9 profiles are orientated by mirroring (1) and then rotating by 180 degrees. British type 8 profiles are not mirrored (0) and just rotated by 180 degrees.

    AVEVA BOCAD

    BRI 2 0 180

    BRI 4 1 180

    DIN 2 0 180

    DIN 4 1 180

    Modify the Profile Mapping File

    Any new profiles requiring mapping between the base product and the external steel detailing system should be entered in the mapping file. Refer to for further information on the profile mapping file structure.

    Re-initialize the System and Save the UI Binaries

    On the Export or Import main forms use Control > Reinitialise for resetting the configuration data only.

    Or execute call !!bocimpexp() in a command window to re-initialize the system.

    However this last option is very brutal as all settings will be lost because the windows and menus are regenerated. The user will then have to regenerate UI binaries after this.

    Installation of User Defined Attributes

    Before you start designing steelwork, the application requires a set of User Defined Attributes (UDAs) specifically for storing related information. These are installed by performing the following actions:

    • Enter the Lexicon module with write access to all the relevant Dictionary databases.

    • Execute the upgrade macro by the following command:

    • call !!bocUDAUpgrade( )

    • Exit from Lexicon, saving the changes.

      Note:
      This upgrade may be run even if the UDAs exist already. In this way you may upgrade the system whenever necessary; for example, to include more UDAs needed for a later version of the application.

    More UDAs might be required in a later version of the application, so you will need to upgrade their current projects if they are to use this later version. The macro has been configured to keep existing UDA definitions so that the user will not lose data.

    Special SITES

    When the AVEVA Bocad Steel Interface application installs itself in the base product’s database, some SITE elements will be created. Typically these will be called something like /FAB-CONFIG-DEMO-SYSTEM and /FAB-OLD-DEMO-SYSTEM. The first is a SITE to store information about the Import and Export processes, default Header information, and Transfer and Revision numbers. The second is a SITE to store items which have been 'deleted' from the model during the Export/Import cycle. This latter site will be created only when needed. The user can always recover elements from this area if they need to later on.

    The name of the configuration and deleted element SITEs are built up of the following components:

    /FAB-

    the system prefix

    CONFIG-

    identification of a Configuration SITE

    OLD-

    identification of a SITE for ‘deleted’ elements

    <mdb name>

    the current MDB, for example /DEMO

    <user name>

    the current user name, for example SYSTEM

    The application checks that you have read/write access to their specific SITEs, since you and the application may need to edit certain attributes.

    The SITE for deleted elements, named in a similar manner to the Configuration object and described in more detail in the User Guide, will store the 'deleted' elements in STRUs according to the Import revision, so that the user can quickly isolate which items were deleted at which time.

    You will note that the SITE names contain the current MDB and the current user name. This is to facilitate multi-user working, and multiple accesses to the database. There may be several of these, depending on which MDB and/or user has access to the particular database. During the Import and Export processes, all these elements are inspected to determine the latest transfer information.

    Update an AVEVA E3D Design project

    To update an AVEVA E3D Design project perform the following:

    1. Before uninstalling the old version of ABSI application, make a back-up of the mapping files if customization has occurred.

    2. In Control Panel, uninstall old versions of the ABSI application.

    3. In PARAGON, first delete the following if they exist -/BOCAD_PROFILES and /BOCAD_SPWL

    4. In a command window, type : !!boccatadespar()

    5. SaveWork and close PARAGON

    6. Start Lexicon

    7. In a command window, type : !!bocudaupgrade()

    8. SaveWork and close Lexicon

    9. Replace mapping files.

      Update a previous ABSI compatible project

      If a previous version of the application has been used on a project, the user must update the project to use new UDAs. This is performed by creating new UDAs in Lexicon and then transferring the old values across.

      1. Start Lexicon

      2. In a command window, type : !!bocudaupgrade()

      3. Save work and close Lexicon

      4. Enter the model design module

      5. In a command window, type : !!bocdesudaupgrade()

      6. This will transfer the old variables into the new UDAs specifically for the application

      7. Save work and continue.

        In This Topic
        Related Links
        TitleResults for “How to create a CRG?”Also Available in