• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      SmartPlant P&ID中PipeRun屬性導(dǎo)入數(shù)據(jù)表的快速構(gòu)建

      2019-05-10 08:31:58勝寶旺寰球工程有限公司潘磊祝濤劉育嘉
      中國勘察設(shè)計(jì) 2019年4期
      關(guān)鍵詞:屬性數(shù)據(jù)二次開發(fā)對象

      ■ 勝寶旺寰球工程有限公司 潘磊 祝濤 劉育嘉

      1.研究背景

      近年來,數(shù)字化交付成為國內(nèi)外工程設(shè)計(jì)領(lǐng)域涌現(xiàn)的新型業(yè)務(wù)之一。數(shù)字化交付為智慧工廠提供數(shù)據(jù)基礎(chǔ),數(shù)字化交付的快速發(fā)展,符合“工業(yè)4.0”和“中國智造2015”的整體趨勢。??怂箍礟PM的SmartPlant系列軟件是數(shù)字化交付平臺的典型代表,其設(shè)計(jì)理念是以數(shù)據(jù)為中心,有別于傳統(tǒng)的圖形輔助設(shè)計(jì)軟件。但到目前為止,SmartPlant相關(guān)的應(yīng)用研究尤其是二次開發(fā)方面的研究仍然較少。SmartPlant P&ID是工藝系統(tǒng)專業(yè)數(shù)字化交付的常用軟件,其開放有豐富的接口,用戶可以進(jìn)行個(gè)性化的二次開發(fā)。

      VBA,英文全稱為Visual Basic Application,是依附于軟件的VB開發(fā)環(huán)境,其作為VB程序語言的衍生物,廣泛存在于Microsoft Office、AutoCAD等常用的工程設(shè)計(jì)軟件環(huán)境中。依附于微軟的Office組件Excel中的VBA也可稱為Excel_VBA。

      數(shù)字化交付中,管道屬性需要批量導(dǎo)入工程數(shù)據(jù)庫,但現(xiàn)有的導(dǎo)入方法或軟件都要求對導(dǎo)入的數(shù)據(jù)進(jìn)行屬性映射,構(gòu)建符合導(dǎo)入模板格式的屬性數(shù)據(jù)表。

      構(gòu)建符合導(dǎo)入模板格式的屬性數(shù)據(jù)表存在以下兩個(gè)難題:

      (1)每個(gè)項(xiàng)目的種子文件不一樣,管線屬性及其命名也各不相同。而在SmartPlant用于屬性管理的組件Data Dictionary Manager中并不能將元件屬性導(dǎo)出或另存為可編輯的文檔,這為屬性的映射帶來了很大的不便;

      (2)各家工程公司的設(shè)計(jì)文件模板如管道特性表均與導(dǎo)入模板結(jié)構(gòu)不同,需要轉(zhuǎn)換。常規(guī)的轉(zhuǎn)換過程是在Excel中將管道特性表通過復(fù)制、粘貼等手段,重新排版成數(shù)據(jù)導(dǎo)入表模板的格式,這種過程較費(fèi)時(shí),也容易出錯(cuò),且涉及傳統(tǒng)設(shè)計(jì)習(xí)慣中的代號如“ATM”、“AMB”、“FV”等,與數(shù)據(jù)導(dǎo)入的要求相悖,需要人工核對、轉(zhuǎn)換成數(shù)字型式的數(shù)據(jù),方能成功導(dǎo)入工程數(shù)據(jù)庫。

      而在數(shù)字化交付的不同階段,為了保證數(shù)字化交付的工程數(shù)據(jù)與項(xiàng)目設(shè)計(jì)的數(shù)據(jù)相一致,并滿足設(shè)計(jì)協(xié)同的要求,數(shù)據(jù)一次性精確地完成導(dǎo)入并不現(xiàn)實(shí),往往需要重復(fù)多次執(zhí)行導(dǎo)入,相應(yīng)的排版工作就要反復(fù)多次,帶來不小的工作量。

      因此,通過二次開發(fā),編寫出能夠快速而準(zhǔn)確地提取出PipeRun屬性的程序,并實(shí)現(xiàn)傳統(tǒng)設(shè)計(jì)文件到符合導(dǎo)入模板格式的PipeRun屬性數(shù)據(jù)表之間的快速轉(zhuǎn)換,具有很高的實(shí)用價(jià)值。

      2.開發(fā)思路和原理

      本文的總體思路是運(yùn)用VBA程序語言,在Excel內(nèi)建的VBE環(huán)境下,對SmartPlant P&ID進(jìn)行二次開發(fā),通過接口訪問數(shù)據(jù)庫,獲取對象屬性,用以構(gòu)建導(dǎo)入模板,并對管道特性表Excel文檔按映射規(guī)則自動(dòng)處理,最終生成可供屬性導(dǎo)入的PipeRun屬性數(shù)據(jù)表。

      開發(fā)原理如下:

      (1)通過對LLAMA庫的引用,建立到數(shù)據(jù)庫的連接。訪問一個(gè)PipeRun對象,獲取所有的屬性名稱,并將這些屬性名稱全部輸出到Excel表中;

      (2)在Excel中,根據(jù)項(xiàng)目統(tǒng)一規(guī)定選取獲得的PipeRun屬性,建立映射,構(gòu)建PipeRun的合規(guī)屬性表;

      (3)分別將傳統(tǒng)的管道設(shè)計(jì)文件與PipeRun合規(guī)屬性表賦予索引值,并將兩個(gè)文件不同的索引值建立映射,以關(guān)聯(lián)兩表;

      (4)通過VBA編程,以索引值的映射關(guān)系為依據(jù),將傳統(tǒng)的管道設(shè)計(jì)文件自動(dòng)轉(zhuǎn)換成PipeRun屬性數(shù)據(jù)表。

      通過以上步驟,實(shí)現(xiàn)導(dǎo)入模板與數(shù)據(jù)庫的屬性映射和屬性導(dǎo)入數(shù)據(jù)表的快速構(gòu)建。

      3.源代碼與注釋

      以下的代碼編譯,需要在工程中引用SmartPlant P&ID Logical Model Automation(llama.dll)和Microsoft Scripting Runtime(scrrun.dll)兩 個(gè)庫文件,如圖1所示。

      3.1 PipeRun屬性的抽取

      (1)定義字符串常量,確定用作媒介的PipeRun對象:

      在SmartPlant P&ID軟件中,在當(dāng)前項(xiàng)目中打開任一圖紙,選中任一PipeRun作為媒介對象,在右側(cè)屬性窗口中,找到SP_ID屬性,將其SP_ID的值復(fù)制到代碼中。如:

      Private Const CONST_SPID_PipeRun As String = “A53EC6D17 E684078A9D091E37E2BD510”

      (2)定義數(shù)據(jù)庫對象,并建立到工程數(shù)據(jù)庫的連接:

      Dim datasource As LMADataSource

      在連接執(zhí)行前,需注意DRAWING MANAGER中的項(xiàng)目數(shù)據(jù)庫要與選作媒介的PipeRun對象所在的數(shù)據(jù)庫保持一致。

      (3)定 義PipeRun對 象,并用GetPipeRun方法獲取用作媒介的PipeRun對象:Dim objPipeRun As LMPipeRun Set objPipeRun =datasource.GetPipeRun(CONST_SPID_PipeRun)

      (4)定義屬性對象,并遍歷objPipeRun的屬性,若屬性值非空,則將屬性名稱存入動(dòng)態(tài)數(shù)組:

      ReDim Attrs(1 To objPipeRun.Attributes.Count)

      Dim objAttribute As LMAAttribute

      浙江醫(yī)藥高等??茖W(xué)校藥學(xué)院在校企辦學(xué)過程中,充分利用“醫(yī)藥強(qiáng)省”、“健康浙江”、“藥品安全示范城市”的建設(shè)契機(jī)和學(xué)院的行業(yè)辦學(xué)背景和寧波市“唯一”的專業(yè)特色,將“藥品安全”特色戰(zhàn)略貫穿于學(xué)院的中心工作中,逐步形成學(xué)院的辦院特色、教育特色、產(chǎn)業(yè)特色和管理特色。

      For Each objAttribute In objPipeRun.Attributes

      If objAttribute.Value <> “” Then

      Attrs(i) = objAttribute.Name

      i = i + 1

      End if

      Next

      (5)獲取ObjPipeRun的非空屬性的名稱后,將其存放的數(shù)組寫入當(dāng)前活動(dòng)的Excel文檔。

      ActiveSheet.Range(“A2”).Resize(i, 1) = WorksheetFunction.Transpose(Attrs)

      3.2 篩選合規(guī)屬性

      在本文的試驗(yàn)中,采用了一個(gè)技巧,可以快速地挑選出項(xiàng)目數(shù)字化交付統(tǒng)一規(guī)定中規(guī)定的管道屬性表,即將媒介PipeRun對象的屬性按照統(tǒng)一規(guī)定的管道屬性表逐一賦值,使其成為一個(gè)形式上符合交付要求的屬性完備的PipeRun對象。所賦值無需準(zhǔn)確,保證相應(yīng)屬性非空即可,因其屬性值在后期的導(dǎo)入中均可再次覆蓋。

      通過對PipeRun對象屬性的抽取,得到了PipeRun對象的全部非空屬性的名稱,其中除PipeRun類型從父類型繼承來的屬性外,其余非空屬性均是項(xiàng)目統(tǒng)一規(guī)定要求必須輸入的屬性,即合規(guī)屬性。圖1中顯示該項(xiàng)目數(shù)據(jù)庫的PipeRun類型具有42個(gè)非空屬性,本研究只涉及對統(tǒng)一規(guī)定要求的屬性,對獲取的屬性進(jìn)行快速挑選后,即可確定全部數(shù)據(jù)導(dǎo)入相關(guān)的屬性。至此已獲得了PipeRun類型的全部合規(guī)屬性,將它們作為基本要素,根據(jù)設(shè)計(jì)者的習(xí)慣和經(jīng)驗(yàn),在Excel中編輯、排版后,即可得到屬性數(shù)據(jù)導(dǎo)入映射表的模板,如圖2所示。

      值得一提的是,若在程序中不設(shè)非空屬性的限定條件,則會(huì)得到該項(xiàng)目中PipeRun類型的全部343個(gè)屬性名稱,可用于其它的二次開發(fā)過程,但這對于本研究獲取合規(guī)屬性是具有一定難度的。

      3.3 Excel文檔的映射重排

      在構(gòu)建了PipeRun屬性數(shù)據(jù)導(dǎo)入模板并實(shí)現(xiàn)了模板與項(xiàng)目數(shù)據(jù)庫相關(guān)屬性的準(zhǔn)確映射之后,還需要將現(xiàn)有的傳統(tǒng)設(shè)計(jì)文件管道特性表,按導(dǎo)入模板的格式和設(shè)定進(jìn)行規(guī)整,方能得到可供導(dǎo)入的PipeRun屬性數(shù)據(jù)表。這里需要解決兩個(gè)問題:“列條目的映射重排”和“特殊值的重新設(shè)定”。

      列條目的映射重排,指的是將傳統(tǒng)設(shè)計(jì)格式的管道特性表以列為單位,與PipeRun屬性數(shù)據(jù)導(dǎo)入模板中的各列相關(guān)聯(lián),并按后者格式重新排版。本研究采用的是索引碼映射法,即為PipeRun屬性導(dǎo)入模板和管道特性表,各自以列為單位設(shè)定一套索引碼,并將導(dǎo)入模板的索引碼填入管道特性表中對應(yīng)的列,這樣即得到了兩個(gè)文檔索引碼的關(guān)聯(lián),實(shí)現(xiàn)了相應(yīng)列的映射(如圖3所示),第7行中各列單元格中即為PipeRun屬性數(shù)據(jù)導(dǎo)入模板對應(yīng)列的索引碼。

      隨后的自動(dòng)化重排代碼與注釋如下:

      Dim Sht As Worksheet, ShtNew As Worksheet ‘\聲 明 兩個(gè)工作表對象變量

      Dim i(), j(), k As Integer ‘\聲明動(dòng)態(tài)數(shù)組變量和循環(huán)條件變量

      Set Sht = ActiveSheet ‘\設(shè)定當(dāng)前工作表為源表

      Set ShtNew = Sheets.Add ‘\設(shè)定一個(gè)新建的工作表作為目標(biāo)表

      圖1 Excel_VBA工程引用的庫文件

      圖2 抽取的PipeRun對象非空屬性

      圖3 包含索引碼映射的傳統(tǒng)設(shè)計(jì)形式管道特性表

      圖4 自動(dòng)轉(zhuǎn)換格式后得到的管道特性表

      圖5 可用作導(dǎo)入的PipeRun屬性數(shù)據(jù)表(局部)

      i = Application.Transpose(Application.Transpose(Sht.Range("A6:Y6"))) ‘\將索引值裝入數(shù)組

      j = Application.Transpose(Application.Transpose(Sht.Range("A7:Y7"))) ‘\將索引值裝入數(shù)組

      Sht.Rows("1:5").UnMerge ‘\取消表頭區(qū)域合并單元格,避免合并單元格對重排版的干擾

      For k = 1 To 25 ‘\對k變量所指定范圍內(nèi)的管道特性表列按兩套索引碼映射關(guān)系進(jìn)行重排版

      Sht.Columns(i(k)).Copy

      ShtNew.Range("A1").Offset(0, j(k) - 1).PasteSpecial ' (xlPasteValues)

      Next k

      程序運(yùn)行后,得到重排的管道特性表,各列數(shù)據(jù)符合導(dǎo)入模板的次序,如圖4所示。

      但表中還存在很多特殊值,如“ATM”、“AMB”、“FV”、“液體”等,這些特殊值不符合數(shù)據(jù)導(dǎo)入對于語言或數(shù)據(jù)類型的要求,需要處理成英文或Select List Entry中事先定義好的形式。本研究對這些特殊值的處理方法,是通過定義VBA字典,用Replace方法實(shí)現(xiàn)批量查找替換的。至此得到了可用作導(dǎo)入的PipeRun屬性數(shù)據(jù)表,如圖5所示。

      4.結(jié)論與展望

      本文運(yùn)用Excel_VBA程序語言,通過對SmartPlant P&ID的LLAMA庫文件的引用,連接了項(xiàng)目數(shù)據(jù)庫,并抽取了期望的PipeRun類型屬性名稱,用以構(gòu)建數(shù)據(jù)導(dǎo)入模板;又通過索引碼映射法對管道特性表的Excel文檔進(jìn)行了自動(dòng)化重排和批量查找替換,最終生成了可用作導(dǎo)入的PipeRun屬性數(shù)據(jù)表。在后續(xù)的項(xiàng)目中,我們將構(gòu)建好的PipeRun屬性數(shù)據(jù)表實(shí)現(xiàn)了導(dǎo)入,一次性導(dǎo)入了整個(gè)項(xiàng)目3000余個(gè)PipeRun的工程數(shù)據(jù),并在之后的升版中,重復(fù)導(dǎo)入了幾次,每次均運(yùn)用本研究所開發(fā)的快速構(gòu)建方法,該項(xiàng)目SmartPlant P&ID元件工程數(shù)據(jù)導(dǎo)入工作的效率和準(zhǔn)確性均得到了極大提高。

      Excel_VBA程序語言是一個(gè)成熟的程序語言,其與??怂箍礟PM官方推薦用于SmartPlant P&ID的二次開發(fā)語言VB具有很高的相似性,同時(shí)Excel_VBA開發(fā)環(huán)境集成于Excel,無需部署,隨手可得。使用Excel_VBA進(jìn)行二次開發(fā),也便于同Excel文檔進(jìn)行數(shù)據(jù)交換。對于工程公司開展數(shù)字化交付業(yè)務(wù)的實(shí)際情況來說,二次開發(fā)的成果并非是商業(yè)化軟件,主要是本公司內(nèi)項(xiàng)目應(yīng)用,則利用Excel_VBA進(jìn)行SmartPlant P&ID二次開發(fā)非常方便。如二次開發(fā)后需要加強(qiáng)保密或商業(yè)化應(yīng)用,可以再轉(zhuǎn)到VB平臺封裝。

      從工程設(shè)計(jì)軟件的橫向考慮,AutoCAD作為傳統(tǒng)工程設(shè)計(jì)常用軟件,也支持VBA開發(fā)環(huán)境,AutoCAD與SmartPlant P&ID軟件通過VBA進(jìn)行協(xié)同,也是一個(gè)未來值得探索的課題。

      本研究僅聚焦于快速構(gòu)建PipeRun的屬性導(dǎo)入表,而該項(xiàng)目要求PID上的所有元件都完成數(shù)據(jù)導(dǎo)入。本文的研究思路和方法還可以運(yùn)用到設(shè)備類型、儀表類型乃至Label類型對象的屬性導(dǎo)入工作之中。

      SmartPlant P&ID的LLAMA庫文件還有很多強(qiáng)大的方法可供二次開發(fā)使用,其中包括LMAutomationUtil、PIDAutomation和PLAICE等庫文件。隨著“中國制造2025”的澎湃大潮和數(shù)字化交付業(yè)務(wù)的開展,面向SmartPlant P&ID的二次開發(fā)必將如雨后春筍般地蓬勃發(fā)展。

      猜你喜歡
      屬性數(shù)據(jù)二次開發(fā)對象
      神秘來電
      睿士(2023年2期)2023-03-02 02:01:09
      淺談基于Revit平臺的二次開發(fā)
      甘肅科技(2020年20期)2020-04-13 00:30:02
      基于GIS的房產(chǎn)測繪管理信息系統(tǒng)架構(gòu)研究
      科技資訊(2019年18期)2019-09-17 11:03:28
      無源多傳感器綜合數(shù)據(jù)關(guān)聯(lián)算法研究
      淺談Mastercam后處理器的二次開發(fā)
      模具制造(2019年3期)2019-06-06 02:11:02
      屬性數(shù)據(jù)分析教學(xué)改革初探
      攻略對象的心思好難猜
      意林(2018年3期)2018-03-02 15:17:24
      西門子Easy Screen對倒棱機(jī)床界面二次開發(fā)
      基于熵的快速掃描法的FNEA初始對象的生成方法
      區(qū)間對象族的可鎮(zhèn)定性分析
      武陟县| 南昌县| 凌源市| 西峡县| 卢湾区| 平阳县| 百色市| 壤塘县| 巴东县| 荆门市| 镇江市| 祁门县| 南昌县| 剑河县| 辽阳市| 治县。| 涟源市| 澄迈县| 乐业县| 曲松县| 醴陵市| 北票市| 潞城市| 郴州市| 都江堰市| 蕲春县| 泽普县| 太保市| 德安县| 佛坪县| 鹿泉市| 武汉市| 五家渠市| 盐边县| 浦江县| 巴彦淖尔市| 车险| 肇源县| 瑞昌市| 长宁县| 寿光市|