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

eryar

PipeCAD - Plant Piping Design Software.
RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
posts - 603, comments - 590, trackbacks - 0, articles - 0

AVEVA PMLNet Guide

Posted on 2014-12-25 22:33 eryar 閱讀(4764) 評(píng)論(2)  編輯 收藏 引用 所屬分類(lèi): 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類(lèi)運(yùn)行時(shí)創(chuàng)建出來(lái),其與.Net類(lèi)有類(lèi)似的方法;代理PML類(lèi)方法的參數(shù)只能是指定的幾種,這幾種類(lèi)型的參數(shù)與.Net類(lèi)型對(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的組件中的類(lèi)和方法。為了在.Net類(lèi)中定義代理PML類(lèi)必須滿(mǎn)足一定的條件(rules)。

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

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

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

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

本文主要通過(guò)一個(gè)簡(jiǎn)單例子來(lái)說(shuō)明PML代理類(lèi)的定義方法,掌握后可以擴(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)訪(fǎng)問(wèn)當(dāng)前數(shù)據(jù)庫(kù)任務(wù),顯示列表drawlist,幾何geometry和其他功能。用戶(hù)可以通過(guò)C#的API來(lái)訪(fǎng)問(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),如下圖虛線(xiàn)所示。

wps_clip_image-23162

Figure 2.1 Using PMLNet

使用PMLNet有如下限制:

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

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

v PML調(diào)用.NET方法時(shí)只能傳入指定類(lèi)型的變量,其他類(lèi)型不支持,如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類(lèi)型的變量可以傳遞到調(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的安裝目錄下,就可以寫(xiě)一個(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'

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

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

!= object PMLNetExample()

實(shí)例化類(lèi)對(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類(lèi)對(duì)象,就必須遵守一定的規(guī)則。這些規(guī)則如下:

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

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

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

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

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

wps_clip_image-5383

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

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

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

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

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

v .NET組件中需要被PML調(diào)用的類(lèi)必須有一個(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組件中的類(lèi)還是很方便的,只要滿(mǎn)足PML代理類(lèi)定義的一些規(guī)則就可以了。

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

在PML中調(diào)用.NET組件中類(lèi)是可行的,但直接在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>
            蜜桃久久精品一区二区| 久久久久久久久久久成人| 欧美午夜影院| 欧美亚洲第一页| 国产精品网站在线播放| 国产精品一区二区男女羞羞无遮挡 | 亚洲欧美日韩中文在线制服| 亚洲一区二区三区高清 | 亚洲精品视频在线| 妖精成人www高清在线观看| 一区二区冒白浆视频| 亚洲男同1069视频| 久久一区中文字幕| 欧美日韩a区| 国产在线欧美日韩| 日韩视频欧美视频| 午夜一区不卡| 亚洲第一偷拍| 亚洲美女免费精品视频在线观看| 洋洋av久久久久久久一区| 午夜精品视频在线观看| 欧美激情1区| 国产一区二区三区在线观看免费| 亚洲乱码日产精品bd| 久久成人亚洲| 日韩亚洲精品视频| 美国十次了思思久久精品导航| 国产精品爱啪在线线免费观看| 永久免费精品影视网站| 亚洲欧美亚洲| 日韩一二三区视频| 老鸭窝亚洲一区二区三区| 国产精品国产三级国产普通话蜜臀| 亚洲国产经典视频| 久久精品国产第一区二区三区最新章节 | 亚洲人成毛片在线播放| 亚洲色在线视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品视频久久久| 99国产精品久久久| 欧美大片91| 久久精品国产免费看久久精品| 欧美日韩伦理在线| 亚洲精品美女在线观看播放| 久久伊人免费视频| 欧美一区二区三区婷婷月色| 欧美日韩久久精品| 欧美激情一区二区三区全黄 | 免费成人av在线看| 国产欧美日韩一区二区三区在线观看| 99re6这里只有精品| 欧美aa国产视频| 久久久亚洲高清| 黄色成人91| 久久精品在线视频| 欧美亚洲免费高清在线观看| 国产精品一卡| 欧美一区二区在线| 一本一本久久| 欧美性做爰猛烈叫床潮| 亚洲视频电影图片偷拍一区| 亚洲精品欧美日韩专区| 欧美激情亚洲| 一本一本a久久| 99re热精品| 欧美日韩一区在线视频| 亚洲在线中文字幕| 午夜精品久久久久久久久久久| 国产日韩精品在线| 久久亚洲一区二区三区四区| 久久夜色精品亚洲噜噜国产mv| 精品动漫一区| 欧美国产日本韩| 欧美精品尤物在线| 亚洲一区二区三区免费视频| 亚洲一区二区三区在线| 国产女主播一区| 久久综合九色欧美综合狠狠| 久久伊伊香蕉| 一本色道久久加勒比88综合| 在线天堂一区av电影| 国产欧美精品日韩区二区麻豆天美| 欧美一区精品| 麻豆精品在线播放| 亚洲精品乱码久久久久久久久| 亚洲精品一级| 国产性猛交xxxx免费看久久| 欧美成人在线网站| 欧美日韩国产精品| 久久国产精品久久久久久电车| 狼人社综合社区| 一区二区三区视频在线看| 麻豆av福利av久久av| 欧美激情一区二区在线| 亚洲永久免费观看| 性欧美1819性猛交| 亚洲日本成人网| 亚洲视频中文| 亚洲第一精品福利| 亚洲天堂免费观看| 亚洲国产一区二区三区在线播| 亚洲天堂男人| 亚洲破处大片| 羞羞视频在线观看欧美| 亚洲国产日韩一级| 欧美一级一区| 亚洲一级影院| 免费在线观看一区二区| 欧美一区二区三区在| 男人的天堂亚洲| 久久久99爱| 国产精品九九| 91久久久久久久久久久久久| 国产无遮挡一区二区三区毛片日本| 亚洲国产美女久久久久| 合欧美一区二区三区| 一区二区三区精密机械公司| 亚洲精品日日夜夜| 久久婷婷成人综合色| 久久都是精品| 国产精品久久一级| 日韩午夜电影在线观看| 亚洲日本国产| 模特精品裸拍一区| 免费国产一区二区| 国内视频一区| 欧美在线关看| 久久国产免费看| 国产精品视频免费在线观看| 日韩视频二区| 中日韩高清电影网| 欧美美女视频| 亚洲黄一区二区三区| 在线日韩日本国产亚洲| 久久精品国产999大香线蕉| 久久国产日本精品| 国产一区99| 欧美在线视频一区| 久久精品亚洲精品国产欧美kt∨| 国产精品女主播在线观看| 亚洲一区二区高清视频| 亚洲女同精品视频| 欧美日一区二区在线观看 | 亚洲精品一区二区三区樱花 | 国产在线视频欧美| 久久精品1区| 欧美成人在线网站| 亚洲精品日韩久久| 欧美视频中文字幕| 亚洲视频福利| 久久激五月天综合精品| 精品999日本| 欧美成人在线免费视频| 亚洲精品一区二区三| 性欧美暴力猛交另类hd| 狠狠色狠狠色综合日日91app| 亚洲国产精品99久久久久久久久| 亚洲第一主播视频| 亚洲黄色av一区| 欧美精品一区二区三| 99热在这里有精品免费| 欧美一区激情视频在线观看| 一区免费观看| 欧美极品在线视频| 亚洲一区二区三区在线| 老司机一区二区三区| 日韩视频不卡| 国产欧美韩日| 农村妇女精品| 亚洲在线视频| 亚洲激情视频网站| 欧美在线视频全部完| 亚洲破处大片| 国产日韩欧美在线一区| 欧美成人嫩草网站| 亚洲欧美日韩电影| 91久久中文| 久久尤物视频| 亚洲欧美精品在线观看| 亚洲国产精品va| 国产精品一页| 欧美成人在线免费观看| 香蕉久久夜色精品国产使用方法| 亚洲电影在线看| 久久精品一区二区三区四区| 夜夜爽www精品| 影音先锋在线一区| 国产精品www994| 欧美第一黄色网| 久久精品国产精品亚洲| 亚洲——在线| 一区二区三区久久网| 欧美寡妇偷汉性猛交| 久久精品男女| 亚洲欧美综合精品久久成人| 亚洲精品在线视频| 亚洲国产精品专区久久| 一区二区三区自拍| 国产午夜精品在线| 国产精品视频不卡|