亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        編程實現(xiàn)海洋石油工程項目電伴熱材料提取

        2020-07-27 02:16:22豐興盛楊富廣黃太安王可民蔣小華史其麒
        山東化工 2020年13期
        關(guān)鍵詞:圖框電伴布置圖

        豐興盛,楊富廣,黃太安,王可民,蔣小華,史其麒

        (海洋石油工程股份有限公司建造事業(yè)部,山東 青島 266520)

        建造事業(yè)部海洋石油工程項目電伴熱帶布置圖包含圖紙編號、材料規(guī)格數(shù)量、回路編號、管線編號、功率、坐標等信息,這些信息靠人工去逐條統(tǒng)計、分析、匯總,勞動強度大、需要時間多、錯誤率高。通過編程,可實現(xiàn)一鍵提取多張圖紙的數(shù)據(jù),并對數(shù)據(jù)進行分類匯總,提高效率和準確性。

        本文中采用CSharp編程需要實現(xiàn)以下幾點:

        (1)從AutoCAD電伴熱帶布置圖中提取每張圖紙的頁碼、圖紙?zhí)?、版次、電伴熱材料、回路編號、管線號、功率、坐標等信息;

        (2)數(shù)據(jù)經(jīng)整理,輸入到所需EXCEL模板中;

        (3)對同類材料進行匯總,輸入到EXCEL表格文件中。

        1 編程語言的選擇

        AutoCAD和Microsoft Office Excel都為C Sharp提供了方便使用的COM組件,本案例編程采用C Sharp語言。

        AutoCAD為C Sharp提供的COM組件為Autodesk.AutoCAD.Interop.dll和Autodesk.AutoCAD.Interop.Common.dll;Microsoft Office Excel所提供的COM組件為Microsoft.Office.Interop.Excel.dll。

        本案例所論述程序的編程語言為C Sharp,編程工具為Visual Studio 2019;AutoCAD版本為AutoCAD_Architecture_2017,Microsoft Office Excel版本為Microsoft Office 2013。EXCLE能實現(xiàn)不同版本兼容;AutoCAD版本不兼容,如使用其它版本的AutoCAD,需要引用對應AutoCAD版本的COM組件。

        2 程序流程

        手動統(tǒng)計電伴熱材料時,先將電伴熱布置圖中的材料信息、管線編號、回路編號等信息錄入到EXCEL表格中,再對材料進行匯總,本案例程序同樣遵循這這種業(yè)務流程。程序的基本流程參照圖1。

        圖1 程序流程

        3 讀取圖紙信息

        3.1 引用接口文件

        在程序中添加引用,選擇AutoCAD應用程序中的Autodesk.AutoCAD.Interop.dll和Autodesk.AutoCAD.Interop.Common.dll文件,引用后出現(xiàn)如圖2兩項。

        圖2 程序引用

        在程序引用命名空間部分,添加:

        using Autodesk.AutoCAD.Interop;

        using Autodesk.AutoCAD.Interop.Common;

        這樣C Sharp所開發(fā)的程序就和AutoCAD之間建立了通訊聯(lián)系,可以調(diào)用AutoCAD的命令,完成電伴熱帶布置圖信息的讀取。

        3.2 打開指定的電伴熱圖

        打開指定的AutoCAD電伴熱帶布置圖需要用到以下語句:

        AcadApplication AcadApp= (AcadApplication)System.Runtime.

        InteropServices.Marshal.GetActiveObject("AutoCAD.Application");

        AcadDocument AcadDoc= AcadApp.Documents.Open(fileName, null, null);

        其中fileName為電伴熱帶布置圖文件全名(包含文件路徑)。

        3.3 讀取信息

        通過分析,電伴熱帶布置圖數(shù)據(jù)提取所需的信息分布在圖3的四個區(qū)域。

        圖3 圖紙區(qū)域劃分

        區(qū)域1為圖紙信息,包含所需的電伴熱回路編號、對應管線號;

        區(qū)域2包含電伴熱功率信息;

        區(qū)域3為圖紙材料表,包含材料的規(guī)格、數(shù)量、描述等信息;

        區(qū)域4為圖框信息,包含圖紙編號、版次信息。

        通過對圖紙區(qū)域的劃分,就可以通過坐標點創(chuàng)建選擇集,分別讀取不同區(qū)域的信息。首先,創(chuàng)建全圖的文本選擇集,檢索關(guān)鍵字,再通過關(guān)鍵字找到圖框,獲得圖框的起點坐標。電伴熱帶布置圖使用統(tǒng)一的圖紙模板,圖框大小及信息的相對位置是一致的,各區(qū)域的相對坐標可以通過圖框的起點坐標和距離獲得。

        創(chuàng)建選擇集使用AcadSelectionSetAdd方法,在命名空間Autodesk.AutoCAD.Interop中。使用Add方法,創(chuàng)建選擇集后,選擇集是空的,里面沒有任何元素。要選擇區(qū)域內(nèi)文本(包括單行文本和多行文本),需要使用選擇集過濾器,用Select方法來為選擇集添加元素。Select的常見用法為:Select(AcSelect Mode, object Point1, object Point2, object FilterType, object FilterData)。其中,Mode為選擇方法,包括框選、窗選等;Point1、Point2為選擇范圍的起點和終點;FilterType為一個Int16類型的一維數(shù)組,標識過濾器的類型(DXF組碼);FilterData為object類型的一維數(shù)組,指定要過濾的值。FilterType和FilterData的數(shù)組元素數(shù)量相同,二者成對出現(xiàn),組成過濾器列表。常見的過濾器DXF 組碼如表1所示。

        表1 DXF 組碼表

        通過以上介紹,已經(jīng)清楚了選擇集的創(chuàng)建,選擇集過濾器的使用,那么創(chuàng)建一個選擇集來選取整個圖面的文本文字,可以用以下代碼:

        AcadSelectionSet mySelectionSet = AcadDoc.SelectionSets.Add("SelectKeyWord");

        Int16[] FilterType = new Int16[7];

        object[] FilterData = new object[7];

        FilterType[0] = -4; FilterData[0] = "

        FilterType[1] = -4; FilterData[1] = "

        FilterType[2] = 0; FilterData[2] = "TEXT";

        FilterType[3] = 0; FilterData[3] = "MTEXT";

        FilterType[4] = -4; FilterData[4] = "OR>";

        FilterType[5] = 8; FilterData[5] = "標準圖框";

        FilterType[6] = -4; FilterData[6] = "AND>";

        double[] point01 = new double[3];

        double[] point02 = new double[3];

        point01[0] = double.MinValue;

        point01[1] = double.MinValue;

        point01[2] = 0;

        point02[0] = double.MaxValue;

        point02[1] = double.MaxValue;

        point02[2] = 0;

        mySelectionSet.Select(AcSelect.acSelectionSetCrossing, point01, point02, FilterType, FilterData);

        通過選擇集選擇了全圖面的單行文本和多行文本,接下來需要遍歷選擇集中的對象,通過比較對象的文本內(nèi)容(TextString屬性),找出關(guān)鍵字對象,獲得它的插入點(單行文本或多行文本的InsertionPoint屬性)。

        double[] ptKeyWord;

        for (int i = 0; i < mySelectionSet.Count; i++)

        {

        AcadText st = mySelectionSet.Item(i) as AcadText;

        if (st != null)

        {

        if (st.TextString.IndexOf(keyWord) > -1)

        {

        ptKeyWord = st.InsertionPoint;

        break;

        }

        }

        else

        {

        AcadMText mt = mySelectionSet.Item(i) as AcadMText;

        if (mt.TextString.IndexOf(keyWord) > -1)

        {

        ptKeyWord = mt.InsertionPoint;

        break;

        }

        }

        }

        需要注意的是,在選擇集使用完成后,要及時刪除選擇集,電伴熱圖紙一次需要處理多張,如果沒有及時刪除選擇集,下次將無法創(chuàng)建,會導致程序崩潰。也可以使用安全創(chuàng)建選擇集的方法,在創(chuàng)建選擇集之前,先遍歷現(xiàn)有選擇集,如果有名稱相同的,則刪除。

        獲得了關(guān)鍵字的插入點,下一步就可以通過插入點,選取一定范圍,來查找圖框?qū)ο螅景咐械膱D框?qū)ο鬄椤癓INE”,在設計選擇集過濾器時將“TEXT”和“MTEXT”替換成“LINE”即可。符合要求的“LINE”對象起點(StartPoint屬性)或終點(EndPoint屬性)就是圖框的基準點。接下來就是根據(jù)基準點劃分區(qū)域,每個區(qū)域重復創(chuàng)建選擇集、遍歷選擇集,不斷讀取文本對象。

        4 數(shù)據(jù)處理及材料匯總

        數(shù)據(jù)的處理是將數(shù)據(jù)整理成需要的數(shù)據(jù)結(jié)構(gòu)。在本案例中,是將圖紙信息整理成跟EXCEL模板對應的數(shù)組,方便后期將數(shù)據(jù)錄入EXCEL文件。

        材料匯總需要計算所有圖紙中相同規(guī)格材料的數(shù)量??梢允褂米值?,字典的關(guān)鍵字為材料的規(guī)格,字典的值為數(shù)量。在循環(huán)讀取材料時,判斷字典的關(guān)鍵字是否存在,如果存在,字典的值增加,如果不存在,則添加關(guān)鍵字和值。

        5 數(shù)據(jù)寫入

        5.1 引用接口文件

        在程序中添加引用,選擇Microsoft Office Excel應用程序中的Microsoft.Office.Interop.Excel.dll文件,引用后出現(xiàn)以下項(圖5)。

        圖4 程序引用

        在程序引用命名空間部分,添加:

        using Microsoft.Office.Interop.Excel;

        5.2 數(shù)據(jù)錄入

        通過COM組件,將數(shù)據(jù)寫入EXCEL,通常有兩種方法,一種是通過循環(huán)行和列,將數(shù)據(jù)寫入對應的單元格,另一種是直接將數(shù)組寫入對應的單元格數(shù)組中。循環(huán)寫入,在數(shù)據(jù)量大的時候,速度較慢;使用數(shù)組寫入的方法速度快,在數(shù)據(jù)量大的時候,尤為突出,而且代碼更簡潔。本案例采用第二種方法。代碼如下所示,其中arr為存儲電伴熱材料的一個二維數(shù)組:

        string path = System.Windows.Forms.Application.StartupPath;

        string fullName = path + @"/Data/Module.xlsx";

        Application exlApp = new Application();

        exlApp.ScreenUpdating = false;

        exlApp.Visible = false;

        Workbook wb = exlApp.Workbooks.Open(fullName);

        Worksheet ws = (Worksheet)wb.Sheets["內(nèi)容"];

        ws.Activate();

        ws.Cells[3, 1].Resize[arr.GetLength(0), arr.GetLength(1)] = arr;

        exlApp.ScreenUpdating = true;

        exlApp.Visible = true;

        6 結(jié)語

        通過程序開發(fā),實現(xiàn)了海洋石油工程項目電伴熱帶布置圖數(shù)據(jù)的自動提取,并將電伴熱材料清單和材料匯總導入到EXCEL中,不必再費時費力逐條統(tǒng)計、匯總、錄入電伴熱材料數(shù)據(jù),保證了數(shù)據(jù)的準確性和輸出文件格式的一致性,極大提高了效率,以建造事業(yè)部的曹妃甸CEPI組塊為例,電伴熱帶布置圖約有600張,人工統(tǒng)計電伴熱材料大約需要150~160個人工時,使用本案例中的程序幾分鐘就能完成。同時,在確保伴熱帶布置圖標準化的情況下,建造事業(yè)部的國內(nèi)項目均可以使用,具有良好的通用性和較為廣闊的前景。

        猜你喜歡
        圖框電伴布置圖
        基于邊緣計算的高速公路電伴熱自動控制系統(tǒng)
        淺論電伴熱帶的選型、安裝和維護
        集氣站電伴熱智能控制節(jié)能改造
        多耦合約束條件下鐵路站場總體布置圖自動生成方法研究
        基于Lisp的自動圖框繪制和輸出管理技術(shù)研究
        城市勘測(2019年1期)2019-02-27 08:07:10
        基于Microstation V8 XM圖紙批量打印的實現(xiàn)
        FPSO天線布置圖設計解析
        析SP3D軟件的ISO出圖模板定制
        干式變壓器三維布置圖結(jié)構(gòu)設計
        電氣化鐵道(2014年6期)2014-05-28 11:05:36
        建筑電氣工程施工識讀到施工的突破口
        男女发生关系视频网站| 成年无码av片完整版| 丁香综合网| 久久久婷婷综合五月天| 开心五月骚婷婷综合网| 国产综合精品一区二区三区| 日韩人妻精品无码一区二区三区| 加勒比日本东京热1区| 少妇人妻av一区二区三区| 无码国内精品人妻少妇蜜桃视频| 啪啪无码人妻丰满熟妇| 亚洲日韩区在线电影| 国产av精品一区二区三区不卡| 久久综合九色欧美综合狠狠| 国产精品老熟女露脸视频| 亚洲高潮喷水中文字幕| 日本中文字幕官网亚洲| 99久久久无码国产精品性| 国产乱子伦在线观看| 欧美综合图区亚洲综合图区| 五月婷婷开心五月播五月| 在线播放免费人成毛片乱码| 亚洲性无码av在线| 国内自拍第一区二区三区| 国产嫩草av一区二区三区| 成年无码av片在线| 日韩欧美国产丝袜视频| 国产一区二区三区探花| 久久婷婷五月综合97色直播| 国产精品亚洲综合色区韩国| 狠狠色噜噜狠狠狠狠97俺也去| 男女激情视频网站免费在线| 久久天天躁狠狠躁夜夜躁2014| 国产亚洲蜜芽精品久久| 日本二区三区视频免费观看| 婷婷色婷婷开心五月四| 国产精品9999久久久久| 久久精品国产亚洲婷婷| 亚洲精品中文字幕不卡| 久久天堂综合亚洲伊人hd妓女| 91视频免费国产成人|