青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eryar

PipeCAD - Plant Piping Design Software.
PlantAssistant - Translate AVEVA RVM/SP3D VUE to glTF, STEP, etc.
posts - 606, comments - 590, trackbacks - 0, articles - 0

AVEVA PMLNet Guide

Posted on 2014-12-25 22:33 eryar 閱讀(4772) 評(píng)論(2)  編輯 收藏 引用 所屬分類: 4.AVEVA Solution

AVEVA PMLNet Guide

eryar@163.com

Abstract. AVEVA PMLNet allows you to instantitate and invoke methods on .NET objects from PML proxy objects. The PML proxy objects behave just like any other PML object. The paper gives a hello world example to demenstrate the PMLNet usage.

Key Words. AVEVA, PMLNet, PML, AVEVA .Net, C#, Managed C++

1. Introduction

AVEVA PMLNet允許在PML代理對(duì)象中實(shí)例化或調(diào)用.Net對(duì)象的方法。代理PML對(duì)象的定義通過(guò).NET類運(yùn)行時(shí)創(chuàng)建出來(lái),其與.Net類有類似的方法;代理PML類方法的參數(shù)只能是指定的幾種,這幾種類型的參數(shù)與.Net類型對(duì)應(yīng)。代理PML對(duì)象的用法及功能表現(xiàn)與其他PML對(duì)象相同。

可被PML調(diào)用的組件(即動(dòng)態(tài)庫(kù)dll)通過(guò)命令I(lǐng)MPORT加載到AVEVA PDMS/Marine中來(lái)。組件可由任意.Net語(yǔ)言來(lái)定義,例如:Managed C++(托管C++)、C#或VB .NET等。PMLNet通過(guò)反射(reflection)來(lái)加載指定的組件。PMLNet引擎(Engine)只會(huì)加載包含有自定義屬性標(biāo)記PMLNetCallable的組件中的類和方法。為了在.Net類中定義代理PML類必須滿足一定的條件(rules)。

綜上所述,在滿足PMLNet一定條件下創(chuàng)建的.Net組件中的類是可以被PML使用的,即可以在PML代碼中調(diào)用.Net組件中的資源。通過(guò)這種方式,可以獲得以下幾點(diǎn)優(yōu)勢(shì):

v 在簡(jiǎn)單易學(xué)的PML中使用.Net庫(kù)中的海量資源,如Excel的讀寫庫(kù)等;

v 程序關(guān)鍵部分用.Net實(shí)現(xiàn),代碼的保密性相對(duì)PML而言要好很多;

v 由于PMLNet引擎支持.Net的組件,即C++、VB.Net寫的庫(kù)都可以被PML調(diào)用;

本文主要通過(guò)一個(gè)簡(jiǎn)單例子來(lái)說(shuō)明PML代理類的定義方法,掌握后可以擴(kuò)展到在PML中使用托管C++,代碼保密性更好且速度更快。這樣就可以在PML中應(yīng)用更廣泛的資源,來(lái)提高程序的開(kāi)發(fā)效率。

由于本人水平所限,文中的錯(cuò)誤不妥之處在所難免,敬請(qǐng)不吝指教,將不勝感激。歡迎討論交流,共同進(jìn)步。

2.Design Details

下圖所示為如何在PDMS/Marine中使用PMLNet實(shí)現(xiàn)自定義。有一些.NET API可以用來(lái)訪問(wèn)當(dāng)前數(shù)據(jù)庫(kù)任務(wù),顯示列表drawlist,幾何geometry和其他功能。用戶可以通過(guò)C#的API來(lái)訪問(wèn)PDMS/Marine,但是直接在C#中調(diào)用PML是不可能的(It is not possible to directly to call PML from C#)。然而AVEVA提供了一個(gè)事件機(jī)制來(lái)允許PML去訂閱(subscrible)C#發(fā)出的事件(events),如下圖虛線所示。

wps_clip_image-23162

Figure 2.1 Using PMLNet

使用PMLNet有如下限制:

v 只有標(biāo)記了PMLNetCallable且滿足一定條件的.Net類才能被PML調(diào)用;

v 模塊切換并不保留.NET對(duì)象,核心的C++或FORTRAN對(duì)象在模塊切換時(shí)也不會(huì)被保留;

v PML調(diào)用.NET方法時(shí)只能傳入指定類型的變量,其他類型不支持,如DIRECTION, ORIENTATION等;

v 在.NET中調(diào)用PML是不允許的,唯一的辦法就是通過(guò).NET的事件來(lái)調(diào)用PML;

v It is not possible to enter ‘partial’ namespaces as you might in C# and expect them to be concatenated;

并不是所有的PML對(duì)象都可以傳遞到所調(diào)用的.NET方法中去,只有下表的PML類型的變量可以傳遞到調(diào)用.NET對(duì)象的方法中去:

wps_clip_image-5893

Figure 2.2 Only PML variables types maybe passed to methods of .NET class

3.Using PMLNet

AVEVA提供了一個(gè)簡(jiǎn)單的PMLNet例子,程序名為PMLNetExample,將這個(gè)例子的代碼例出如下所示:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Collections;

using Aveva.PDMS.PMLNet;

namespace Aveva.Pdms.Examples
{
    [PMLNetCallable()]
    
public class PMLNetExample
    {
        [PMLNetCallable()]
        
public event PMLNetDelegate.PMLNetEventHandler PMLNetExampleEvent;

        [PMLNetCallable()]
        
public PMLNetExample()
        {
        }

        [PMLNetCallable()]
        
public void Assign(PMLNetExample that)
        {
            
//No state
        }

        [PMLNetCallable()]
        
public void RaiseExampleEvent()
        {
            ArrayList args 
= new ArrayList();
            args.Add(
"ExampleEvent");
            
if (PMLNetExampleEvent != null)
                PMLNetExampleEvent(args);
        }

        
        [PMLNetCallable()]
        
public void Method()
        {
            MessageBox.Show(
"Called Method");
        }
    }
}

如上述代碼所示,需要暴露給PML的方法或?qū)傩远家獦?biāo)記上PMLNetCallable。將上述代碼編譯后生成一個(gè)組件放到PDMS/Marine的安裝目錄下,就可以寫一個(gè)PML小程序來(lái)測(cè)試效果了。

在CommandWindow中輸入如下圖所示的命令:

wps_clip_image-24546

Figure 3.1 Using PML proxy object in PML

在PML中使用代理PML對(duì)象主要分為以下步驟:

v 使用IMPORT命令導(dǎo)入組件;

import 'PMLNetExample'

其中PMLNetExample是生成的dll組件名;

v 引入命名空間;

using namespace 'Aveva.Pdms.Examples'

命名空間的名稱與C#中命名空間對(duì)應(yīng);

v 實(shí)例化類對(duì)象;

!= object PMLNetExample()

實(shí)例化類對(duì)象的方式與其他PML對(duì)象一樣。

v 調(diào)用對(duì)象方法;

!a.method()

調(diào)用對(duì)象的方法也和PML對(duì)象一樣,得到結(jié)果如下圖所示:

wps_clip_image-3837

Figure 3.2 Test PML proxy object method

4.Rules for Calling .NET

想要在PML中調(diào)用.NET類對(duì)象,就必須遵守一定的規(guī)則。這些規(guī)則如下:

v 可被PML調(diào)用的.NET組件必須由PMLNetCallable標(biāo)記且位于%PDMSEXE%目錄中;

v .NET組件中只有類可以被PML使用,結(jié)構(gòu)體、接口及枚舉除外;

v .NET組件中需要被PML調(diào)用的類必須由PMLNetCallable標(biāo)記;

v .NET組件中需要被PML調(diào)用的方法必須由PMLNetCallable標(biāo)記;

v .NET組件中需要被PML調(diào)用的方法的參數(shù)類型必須為指定的幾種類型;

wps_clip_image-5383

Figure 4.1 Only PML variables types maybe passed to methods of .NET class

v .NET組件中需要被PML調(diào)用的類和方法必須是公有的;

v .NET組件中需要被PML調(diào)用的方法不支持默認(rèn)參數(shù)的定義;

v .NET組件中需要被PML調(diào)用的類和方法名稱是區(qū)分大小寫的;

v .NET組件中需要被PML調(diào)用的類中必須要有Assign()方法;

v .NET組件中需要被PML調(diào)用的類必須有一個(gè)由PMLNetCallable標(biāo)記的公有的默認(rèn)構(gòu)造函數(shù);

如果沒(méi)有遵守上述條件之一,當(dāng)加載相應(yīng)的組件時(shí)就會(huì)報(bào)出錯(cuò)誤,錯(cuò)誤信息如下所示:

(46,87) PML: Object definition for XXX could not be found.

5.Conclusion

綜上所述,在PML中調(diào)用.NET組件中的類還是很方便的,只要滿足PML代理類定義的一些規(guī)則就可以了。

由于.NET組件中的類是由.NET語(yǔ)言實(shí)現(xiàn)的,所以托管C++、C#及VB.NET編寫的組件都可以包裝成代理PML類,進(jìn)而被PML調(diào)用。這種方式就更加擴(kuò)大了PML可使用的資源,如C++的庫(kù)都可以在PML中使用,且代碼更保密,不易查看源碼。

在PML中調(diào)用.NET組件中類是可行的,但直接在C#中調(diào)用PML卻是不可行的。AVEVA也提供了在C#中調(diào)用PML的方式:即通過(guò)事件訂閱,詳細(xì)請(qǐng)參考文檔。

6. References

1. AVEVA .NET Customisation User Guide

2. Example of PML Callable: PMLNetExample

3. AVEVA Software Customisation Guide

4. AVEVA Software Customisation Reference Manual

5. AVEVA Data Access Routines User Guide

 

PDF Version: AVEVA PMLNet Guide

Feedback

# re: AVEVA PMLNet Guide  回復(fù)  更多評(píng)論   

2015-12-28 11:50 by lh
請(qǐng)問(wèn)在VB.NET中,如何標(biāo)記“PMLNetCallable”?謝謝

# re: AVEVA PMLNet Guide  回復(fù)  更多評(píng)論   

2015-12-28 19:43 by eryar
@lh
Hi 你好!

PMLNetCallable只針對(duì)C#的,VB沒(méi)用過(guò),不清楚。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情自拍| 亚洲电影自拍| 国产精品入口尤物| 国产精品日本| 国产欧美日韩激情| 国产午夜亚洲精品羞羞网站| 国产精品激情偷乱一区二区∴| 欧美激情麻豆| 国产精品v欧美精品v日本精品动漫| 欧美日韩精品免费| 国产精品久线观看视频| 国产麻豆精品久久一二三| 国产一区二区欧美日韩| 亚洲国产免费看| 日韩一级裸体免费视频| 亚洲午夜在线观看| 久久久久国内| 猛干欧美女孩| 亚洲国产精品精华液2区45| 91久久精品国产91久久性色| 亚洲美女毛片| 性做久久久久久久久| 久久伊人亚洲| 欧美日韩一区二区三区四区在线观看 | 99国产精品久久| 亚洲综合欧美日韩| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩高清一区| 国产在线观看91精品一区| 亚洲人成亚洲人成在线观看图片 | 久久亚洲精品网站| 亚洲精品日韩一| 欧美亚洲在线播放| 欧美日本一区二区三区| 一色屋精品视频免费看| 亚洲一区二区动漫| 欧美黑人多人双交| 午夜在线成人av| 欧美日韩国产一区二区三区地区| 国产亚洲一二三区| 亚洲专区国产精品| 亚洲国产三级网| 久久精品免费看| 国产精品视频yy9099| 99精品视频网| 欧美国产一区二区| 久久九九久久九九| 国产欧美精品久久| 亚洲自拍偷拍麻豆| 亚洲精品乱码久久久久久按摩观| 久久精品麻豆| 激情成人av| 久久国产视频网| 亚洲一区激情| 国产精品黄视频| 亚洲午夜精品久久久久久浪潮| 欧美黄色成人网| 久久久噜噜噜久久人人看| 国产乱人伦精品一区二区 | 欧美日韩视频在线一区二区 | 亚洲国产天堂网精品网站| 久久九九热re6这里有精品| 99v久久综合狠狠综合久久| 欧美高清不卡在线| 亚洲国产三级| 亚洲免费一在线| 欧美成人免费观看| 国产在线视频欧美| 国产美女精品视频免费观看| 99在线精品视频在线观看| 亚洲国产高清aⅴ视频| 蜜桃av一区| 亚洲精品久久久蜜桃 | 亚洲午夜91| 国产精品网红福利| 亚洲欧美日韩爽爽影院| 亚洲一区三区视频在线观看| 国产精品一区2区| 久久9热精品视频| 欧美一二三区在线观看| 国产中文一区二区| 女同性一区二区三区人了人一 | 99国产精品久久久久老师| 一本色道久久综合亚洲91| 国产毛片精品国产一区二区三区| 久久精品国产亚洲一区二区| 久久亚洲私人国产精品va媚药| 亚洲电影网站| 一区二区欧美国产| 好看不卡的中文字幕| 亚洲区欧美区| 国产伦精品一区二区三区免费迷 | 农村妇女精品| 国产精品成人一区二区网站软件| 久久激情综合网| 欧美激情第一页xxx| 性久久久久久久久久久久| 久久视频在线免费观看| 亚洲一二三区精品| 久久裸体视频| 在线亚洲免费| 久久综合一区二区| 午夜精品久久久久影视 | 亚洲区一区二| 国模精品娜娜一二三区| 日韩午夜在线视频| 亚洲综合日韩中文字幕v在线| 国产一区二区三区精品欧美日韩一区二区三区| 久久久精品性| 免费不卡在线视频| 亚洲淫性视频| 亚洲特黄一级片| 亚洲人成77777在线观看网| 亚洲最新视频在线| 欧美黄色小视频| 一区二区欧美激情| 亚洲欧美日韩爽爽影院| 国产精品日韩欧美一区二区三区 | 欧美一区精品| 日韩亚洲精品视频| 亚洲欧美日韩视频二区| 在线视频精品一区| 久久精品观看| 亚洲影院免费| 欧美bbbxxxxx| 欧美一区二区视频观看视频| 一本色道久久加勒比88综合| 亚洲精品视频免费观看| 亚久久调教视频| 中国av一区| 另类国产ts人妖高潮视频| 香蕉久久夜色精品国产| 欧美福利在线| 亚洲国产精品成人va在线观看| 亚洲网友自拍| 一本久道久久综合狠狠爱| 久久久99久久精品女同性| 亚洲免费中文| 女人天堂亚洲aⅴ在线观看| 欧美一区二区三区的| 欧美日本不卡视频| 欧美激情四色| 激情成人亚洲| 性欧美xxxx视频在线观看| 久久久99精品免费观看不卡| 国产精品久久久一区二区| 亚洲免费观看高清在线观看| 最新国产拍偷乱拍精品 | 在线视频国产日韩| 久久欧美肥婆一二区| 久久国产精品久久国产精品| 国产精品久久久久久久电影 | 一区二区三区av| 免费在线看成人av| 久久一二三国产| 国产一区日韩一区| 欧美一级视频| 久久久久国产一区二区| 亚洲高清免费在线| 久久伊人免费视频| 欧美激情日韩| 亚洲精品一品区二品区三品区| 欧美bbbxxxxx| 亚洲视频电影图片偷拍一区| 亚洲免费综合| 国产亚洲精品久久久久婷婷瑜伽| 欧美一级午夜免费电影| 另类激情亚洲| 欧美成人资源网| 亚洲视频在线观看网站| 久久国产免费看| 伊人久久综合| 毛片精品免费在线观看| 亚洲黄色天堂| 久久国产福利| 91久久午夜| 欧美日韩高清免费| 亚洲日本va在线观看| 午夜亚洲福利在线老司机| 中国女人久久久| 国产精品网曝门| 久久av一区二区三区亚洲| 欧美国产一区在线| 欧美一区二区三区久久精品茉莉花| 国产婷婷色一区二区三区| 老牛影视一区二区三区| 一区二区三区四区精品| 久久久久久精| 国产精品激情偷乱一区二区∴| 久热精品视频| 一本久久综合亚洲鲁鲁| 久久婷婷国产麻豆91天堂| 亚洲韩国一区二区三区| 久久综合伊人77777麻豆| 午夜精品影院| 亚洲国产女人aaa毛片在线| 欧美在线啊v一区| 亚洲精品国产精品乱码不99按摩| 免费在线播放第一区高清av| 久久精品国产亚洲高清剧情介绍|