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

AVEVA™ Engineering

PML​.NET

  • Last UpdatedMar 16, 2023
  • 2 minute read

PML.NET is used to instantiate and invoke methods on .NET objects from PML proxy objects. PML proxy class definitions are created from .NET class definitions at run time. These proxy classes present the same methods as the .NET class which are described using custom attributes. Proxy methods are passed arguments of known types which are marshalled to the corresponding method on to the .NET instance. The PML proxy objects behave just like any other PML object.

The PML.NET functionality includes:

  • .NET reflection to create PML class definition

  • Creation of a proxy PML instance which behaves just like any other PML object

  • Mixing of PML and .NET assemblies and access to .NET objects from PML

  • Extensible Hybrid GUI with .NET controls

  • PML customization using events

The example displays PMLNetCallable class code:

using System;

using Aveva.PDMS.PMLNet;

namespace Aveva.PDMS.PMLNetTest

{

    [PMLNetCallable()]

    public class PMLNetObject

   

        [PMLNetCallable()]

        public PMLNetObject()

        {

        }

        [PMLNetCallable()]

        public void Test()

        {

            MessageBox.Show("Message");

        }

    }

}

The .NET class is instantiated using the Command Window.

Resulting in the display of the following window:

PMLUserControl

The example displays PMLNetCallable user control code which is used to prepend the class definition:

[PMLNetCallable()]

public class GridControl : System.Windows.Forms.UserControl

{

}

PML Form

The example displays PMLNetCallable form control code which is used to create the window:

import 'GridControl'

handle any

endhandle

setup form !!MyForm resize

    using namespace 'Aveva.Pdms.Presentation'

    member .grid is NetGridControl

    path down

    container .gridFrame PmlNetControl 'grid' dock fill width 30 height 20

Exit

The example displays PMLNetCallable form control code which is used to display the window:

show !!MyForm

Call PML from Managed Code

PMLNetAny any = PMLNetAny.createInstance("PMLObject", args, 0);

define object PMLObject

member .name is STRING

endobject

define method .PMLObject()

!this.name = 'PMLObject'

endmethod

define method .PMLMethod()

endmethod

any.invokeMethod("PMLMethod", args, 0, ref result);

define method.PMLMethod()

endmethod

Detailed information about PMLNet is available, refer to Data Model Definition Classes for further information.

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