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

        ?

        基于.NET編程增強(qiáng)Excel與CAD的數(shù)據(jù)交流功能
        ——以水利工程設(shè)計(jì)應(yīng)用為例

        2015-01-04 01:47:33
        關(guān)鍵詞:橫斷面二次開(kāi)發(fā)控制點(diǎn)

        馬 宇

        (遼寧省大伙房水庫(kù)輸水工程建設(shè)局,遼寧沈陽(yáng)110166)

        基于.NET編程增強(qiáng)Excel與CAD的數(shù)據(jù)交流功能
        ——以水利工程設(shè)計(jì)應(yīng)用為例

        馬 宇

        (遼寧省大伙房水庫(kù)輸水工程建設(shè)局,遼寧沈陽(yáng)110166)

        為解決水利工程設(shè)計(jì)中Excel與CAD的數(shù)據(jù)交流問(wèn)題,采用基于C#.NET編程的方式來(lái)增強(qiáng)CAD對(duì)Excel文件中數(shù)據(jù)的讀取和編輯。

        數(shù)據(jù)交流;Excel;CAD;水利工程設(shè)計(jì)

        1 引言

        Excel和CAD是在水利工程設(shè)計(jì)中廣泛應(yīng)用的商業(yè)軟件,Excel方便保存、編輯表格數(shù)據(jù),CAD有效輔助設(shè)計(jì)繪制工程圖。在設(shè)計(jì)中,工程師們往往需要把大量的Excel數(shù)據(jù)轉(zhuǎn)換成直觀的CAD中的點(diǎn)、線等圖元,在這些圖元的基礎(chǔ)上進(jìn)行工程設(shè)計(jì);同時(shí)也需要把CAD中的一些圖元屬性提取出來(lái)保存到Excel文件中,以便于計(jì)算工程量和確定控制坐標(biāo)等。如何解決好Excel與CAD之間的數(shù)據(jù)交流是提高水利工程設(shè)計(jì)效率和質(zhì)量的重要環(huán)節(jié)。

        Excel和CAD均屬于通用軟件,雖然CAD中個(gè)別功能提供了對(duì)Excel文件的簡(jiǎn)單支持,但由于水利工程上邊界條件復(fù)雜,隨機(jī)性強(qiáng)、設(shè)計(jì)面廣[1],CAD的自帶功能無(wú)法滿足水利工程設(shè)計(jì)中大量數(shù)據(jù)交流便捷、準(zhǔn)確的要求,設(shè)計(jì)人員的數(shù)據(jù)交流操作繁瑣而重復(fù)。

        Excel和CAD軟件均提供了優(yōu)良的二次開(kāi)發(fā)接口,隨著編程技術(shù)的發(fā)展和軟件版本的升級(jí),對(duì)這兩種軟件進(jìn)行二次開(kāi)發(fā)的門(mén)檻也逐漸降低,基于微軟公司提供的.NET平臺(tái)對(duì)Excel和CAD進(jìn)行二次開(kāi)發(fā)就是一種較為便捷的方法。

        2 實(shí)現(xiàn)數(shù)據(jù)交流的思路

        借助Excel和CAD提供的二次開(kāi)發(fā)接口,編寫(xiě)一個(gè)程序,作為橋梁搭接Excel和CAD程序,程序本身應(yīng)具有打開(kāi)、讀取、修改、保存Excel文件和CAD文件的功能,并應(yīng)具備實(shí)時(shí)顯示設(shè)計(jì)成果和簡(jiǎn)潔的操作界面等特點(diǎn)。

        Excel二次開(kāi)發(fā)主要有三種方式:VBA的內(nèi)部開(kāi)發(fā)、COM插件開(kāi)發(fā)和自動(dòng)化服務(wù)開(kāi)發(fā)[2]。CAD提供了五種主要的開(kāi)發(fā)工具,分別是:使用C++的Object-ARX,VB/VBA的ActiveX開(kāi)發(fā),ADS,AutoLisp/VisualLisp以及.NET開(kāi)發(fā)[3]。綜合分析兩個(gè)軟件的二次開(kāi)發(fā)方式,本文選用基于.NET開(kāi)發(fā)CAD并添加Excel的COM插件的方式來(lái)搭建溝通兩個(gè)軟件的橋梁,這種方法相比其他方式組合更容易搭建編譯平臺(tái),可以較為完整地調(diào)用CAD和Excel提供的二次開(kāi)發(fā)接口功能,方便制作窗口界面和實(shí)時(shí)檢驗(yàn)計(jì)算成果。

        .NET開(kāi)發(fā)是基于微軟.NET平臺(tái)直接進(jìn)行CAD二次開(kāi)發(fā)的一種新技術(shù),能夠完全支持.NET開(kāi)發(fā)的CAD版本需高于2006。.NET可以引用CAD提供的對(duì)象庫(kù),進(jìn)而建立自己的動(dòng)態(tài)鏈接庫(kù)程序(*.dll文件),在CAD中加載編譯后的動(dòng)態(tài)鏈接庫(kù)程序,就可以達(dá)到編程操作CAD的功能。通過(guò).NET控制Excel文件的前提是添加Excel的COM組件的引用[4]。COM組件中提供了Excel相關(guān)的類(lèi)和接口,通過(guò)COM組件可以編程創(chuàng)建、顯示、編輯、讀取、保存Excle文件。

        創(chuàng)建一個(gè)CAD可以加載調(diào)用的動(dòng)態(tài)鏈接庫(kù)程序,程序同時(shí)引用ExcelCOM組件。在CAD環(huán)境下啟動(dòng)動(dòng)態(tài)鏈接庫(kù)程序,讀取Excel文檔內(nèi)容,保存到程序的數(shù)據(jù)變量中,然后調(diào)用CAD中的繪圖類(lèi),根據(jù)讀取的數(shù)據(jù)繪圖;或者在CAD中借助提取圖形對(duì)象函數(shù),提取CAD圖紙中的點(diǎn)、線等圖元的基本屬性,通過(guò)程序分析計(jì)算形成需要的數(shù)據(jù)成果,寫(xiě)入到Excel文件中。.NET平臺(tái)上,可以實(shí)現(xiàn)Excel與CAD數(shù)據(jù)的雙向流通,編程思路見(jiàn)圖1。

        圖1 編程溝通Excel和CAD數(shù)據(jù)流程圖

        3 編程實(shí)現(xiàn)操作Excel與CAD

        3.1 編程語(yǔ)言及編譯環(huán)境

        .NET平臺(tái)又稱(chēng).NETFramework,目前最新的是4.5版本。是由微軟開(kāi)發(fā)的一個(gè)致力于敏捷軟件開(kāi)發(fā)、快速應(yīng)用開(kāi)發(fā)、平臺(tái)無(wú)關(guān)性、跨語(yǔ)言編程和網(wǎng)絡(luò)透明化的軟件開(kāi)發(fā)平臺(tái)[5]。.NET包含四種核心語(yǔ)言:VB、VC++、C#和J#[6],本文選用C#進(jìn)行編程,C#是微軟為.NETFramework量身訂做的程序語(yǔ)言[7],具有使用簡(jiǎn)易和功能強(qiáng)大的特點(diǎn)。目前開(kāi)發(fā).NET平臺(tái)程序,最高效的編譯調(diào)試平臺(tái)莫過(guò)于微軟公司推出的VisualStudio(簡(jiǎn)稱(chēng)VS)集成開(kāi)發(fā)環(huán)境。本文采用VS2010版本進(jìn)行編譯環(huán)境搭建??紤]使用習(xí)慣和程序的兼容性,CAD采用2007版本,Excel采用2003版本。

        首先,在VS中新建一個(gè)項(xiàng)目,模板采用C#下的“類(lèi)庫(kù)”,.NET平臺(tái)選擇2.0版本(不同版本CAD對(duì)應(yīng)不同版本.NET,通過(guò)較低版本.NET編譯的程序一般可以在較高版本CAD中運(yùn)行)。在“解決方案”中添加引用“acdbmgd.dll”和“acmgd. dll”,并設(shè)置“復(fù)制本地”為“False”。

        然后,引用Excel的COM插件,不同版本Excel對(duì)應(yīng)的COM插件版本有所不同,2003版本的Excel的COM插件名稱(chēng)為“MicrosoftExcel11.0ObjectLibrary”。

        最后,設(shè)置程序的“調(diào)試”屬性,啟動(dòng)外部程序路徑設(shè)為本機(jī)CAD2007的“acad.exe”程序路徑。至此,程序的編譯平臺(tái)就搭建完成。

        3.2 編程操作Excel文檔

        編程可以實(shí)現(xiàn)Excel的大部分功能,具體調(diào)用的類(lèi)和函數(shù)也非常多,具體可以參考微軟公司提供的COM插件的幫助手冊(cè)。較為基礎(chǔ)和常用的Excel操作為打開(kāi)文檔,讀取、修改單元格內(nèi)容,保存文檔。為了更好應(yīng)對(duì)復(fù)雜的Excel表格格式,本文采用逐單元格讀取/賦值的方式操作Excel文檔。例如打開(kāi)一個(gè)路徑保存在filename變量的*.xls文件,讀取A1單元格內(nèi)容保存在變量ReadCell中,并修改B1單元格內(nèi)容為“Level”,編程主要代碼為:

        (首先添加using Excel=Microsoft.office.Interop.Excel;)

        Excel.Applicationapp=newExcel. Application( );∥新建Excel進(jìn)程

        Excel.WorkbookClassw=(Excel. WorkbookClass)app.Workbooks.open(filename,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type. Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type. Missing,Type.Missing,Type.Missing);∥打開(kāi)文件

        Excel.Worksheetsheet=(Excel. Worksheet)w.Sheets;∥選擇Excel文件sheet

        string ReadCell=((Excel.Range)sheet.Cells[1,1]).Text.ToString( );∥讀取A1單元格中的數(shù)據(jù)

        sheet.Cell[1,2]=”Level”;∥修改B1單元格內(nèi)容為L(zhǎng)evel

        w.Close(null,null,null);∥關(guān)閉文件

        app.Quit( );∥退出Excel進(jìn)程,非常重要,不然Excel的進(jìn)程將一直在電腦后臺(tái)運(yùn)行

        3.3 編程操作CAD

        通過(guò).NET平臺(tái)操作CAD可以實(shí)現(xiàn)CAD的絕大部分功能,可調(diào)用的類(lèi)和函數(shù)非常多,具體可參考Autodesk公司提供的CAD二次開(kāi)發(fā)幫助手冊(cè)。較為基礎(chǔ)和常用的CAD操作有繪制圖元和提取圖元的屬性。例如,根據(jù)數(shù)據(jù)繪制一條多段線和提取某點(diǎn)的坐標(biāo),以下是編程的主要內(nèi)容。

        首先添加using Autodesk.AutoCAD.ApplicationServices;

        using Autodesk.AutoCAD.Runtime;

        using Autodesk.AutoCAD.EditorInput;

        在新建的類(lèi)中添加以下代碼:

        [CommandMethod("SLCAD")] ∥啟動(dòng)程序命令

        publicvoidRunApp( )

        {∥繪制多段線

        intn=pts.Count;∥獲取保存多段線坐標(biāo)的數(shù)組pts的點(diǎn)數(shù)

        Polylineent=newPolyline( );∥新建一個(gè)多段線對(duì)象

        for(inti=0;i<n;i++)∥設(shè)置多段線各節(jié)點(diǎn)坐標(biāo)

        ent.AddVertexAt(i,pts[i],0,0,0);objectIdentId=Append Entity(ent);對(duì)象添加到CAD文件列表中∥提取點(diǎn)坐標(biāo)

        Editoreditor=Autodesk.AutoCAD. Application Services.Application.Document Manager.MdiActive Document.Editor;∥新建一個(gè)編輯對(duì)象

        Prompt Pointoptionsoptions=new Prompt Pointoptions(" 請(qǐng)?jiān)趫D紙上選取點(diǎn)");

        options.AllowNone=true;∥提取坐標(biāo)

        Point3dcenPt=editor.GetPoint(options).Value;∥把點(diǎn)坐標(biāo)保存到cenPt變量中}

        3.4 加載調(diào)用程序

        通過(guò)VS編譯后生成動(dòng)態(tài)鏈接庫(kù)程序。在打開(kāi)的CAD中輸入命令“netload”后彈出對(duì)話框,在對(duì)話框中找到生成的動(dòng)態(tài)鏈接庫(kù)程序路徑,加載程序。然后輸入啟動(dòng)程序的命令,例如上面一個(gè)例子中,需要輸入“SLCAD”命令啟動(dòng)程序功能。

        4 編程實(shí)例

        實(shí)際編程中,可以借助.NET平臺(tái)創(chuàng)建窗口,給Excel文件的開(kāi)啟和關(guān)閉設(shè)置相應(yīng)的按鈕或提示。如果頻繁調(diào)用CAD中的主要函數(shù),每次編寫(xiě)代碼較為繁瑣,可以自定義類(lèi)和函數(shù),把常用的功能模塊化。例如繪制多段線的功能,可以模塊化為函數(shù):

        publicstaticobjectIdAddPline(Point2dCollectionpts,doublewidth)

        ∥函數(shù)的參數(shù)為保存多段線點(diǎn)的數(shù)組和擬畫(huà)多段線的線寬

        {try{intn=pts.Count;Polyline ent=newPolyline( );

        for(inti=0;i<n;i++)

        ent.AddVertexAt(i,pts[i],0,width,width);

        objectIdentId=AppendEntity(ent);

        returnentId;∥返回多段線對(duì)象}

        catch∥程序異常處理

        {objectIdnullId=objectId.Null;returnnullId;}}

        4.1 讀取Excel中橫斷面數(shù)據(jù),在CAD中繪制橫斷面圖

        在水利工程設(shè)計(jì)中,經(jīng)常要在橫斷面圖上進(jìn)行工程布置和計(jì)算工程量等,實(shí)測(cè)橫斷面數(shù)據(jù)通常以Excel文件保存,斷面數(shù)目多,且格式類(lèi)似。如果逐一手繪橫斷面,不僅工作量極大,而且準(zhǔn)確性差。本文通過(guò).NET編程實(shí)現(xiàn)讀取Excel中橫斷面數(shù)據(jù),在CAD中繪制橫斷面圖的功能,即通過(guò)程序讀取如圖2中的Excel數(shù)據(jù),調(diào)整程序參數(shù),在CAD中繪制如圖4的橫斷面圖。

        4.2 在CAD圖中拾取控制點(diǎn),并把控制點(diǎn)坐標(biāo)保存到Excel文件中

        水利工程設(shè)計(jì)中,為了方便工程放樣,需要提供CAD設(shè)計(jì)圖紙中控制點(diǎn)的坐標(biāo)。坐標(biāo)文件通常采用Excel格式保存。對(duì)于控制點(diǎn)較多的圖紙而言,如果采用手動(dòng)的方式逐一獲取控制點(diǎn)坐標(biāo)屬性,輸入到Excel文件里,效率非常低,而且容易出錯(cuò)。本文采用.NET編程的方法,實(shí)現(xiàn)在CAD圖中拾取控制點(diǎn),并把控制點(diǎn)坐標(biāo)保存到Excel文件中,即通過(guò)程序提取如圖5中的CAD圖紙中的控制點(diǎn)屬性,篩選整理控制點(diǎn)坐標(biāo),將坐標(biāo)保存到如圖7的Excel文件中。

        圖2 Excel中橫斷面數(shù)據(jù)格式

        圖3 程序界面截圖

        圖4 程序在CAD中繪圖成果圖

        圖5 CAD文件中控制點(diǎn)位置

        圖6 程序界面截圖

        圖7 提取坐標(biāo)輸入到Excel中成果

        5 結(jié)語(yǔ)

        基于.NET平臺(tái),憑借Excel和CAD提供的二次開(kāi)發(fā)接口,可以較方便地實(shí)現(xiàn)Excel與CAD之間的數(shù)據(jù)交流功能,簡(jiǎn)化水利設(shè)計(jì)過(guò)程中的操作步驟,提高繪圖、計(jì)算的速度和精度。由于篇幅限制,本文只簡(jiǎn)單介紹了Excel和CAD二次開(kāi)發(fā)的最基本功能,在實(shí)際生產(chǎn)工作中,結(jié)合Excel和CAD的二次開(kāi)發(fā)運(yùn)用,有著更大的靈活性和擴(kuò)展空間。

        [1]梁國(guó)偉等.CAD二次開(kāi)發(fā)在水利水電工程制圖中的應(yīng)用[J].水科學(xué)與工程技術(shù),2006(02):50-51.

        [2]郭來(lái)軍.淺談EXCEL二次開(kāi)發(fā)的三種方式[J].遼寧科技學(xué)院學(xué)報(bào),2007(04):23+29.

        [3]王永輝,胡青泥與李紅彩.AutoCAD二次開(kāi)發(fā)方法的研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2007(03):94-96+100.

        [4]斯琴巴圖,楊利潤(rùn).C#winform中嵌入Excel實(shí)現(xiàn)復(fù)雜表格的顯示和控制[J].軟件導(dǎo)刊,2013(04):26-27.

        [5]KarliWatson,ChristianNagel,BeginningVisualC#2010[M],WileyPublishing,2010.

        [6]黃箐,馬德山,項(xiàng)鏈.基于.NET實(shí)現(xiàn)多語(yǔ)言互操作性[J].西北民族大學(xué)學(xué)報(bào)(自然科學(xué)版),2007(02):38-44.

        [7]蔡守允,楊大明,朱其俊.模型試驗(yàn)流速測(cè)量?jī)x器的分析研究[J].水資源與水工程學(xué)報(bào),2007(03).

        TP316

        :B

        :1672-2469(2015)07-0056-04

        10.3969/j.issn.1672-2469.2015.07.021

        馬 宇(1981年—),男,工程師。

        猜你喜歡
        橫斷面二次開(kāi)發(fā)控制點(diǎn)
        城市道路橫斷面設(shè)計(jì)研究
        淺談基于Revit平臺(tái)的二次開(kāi)發(fā)
        甘肅科技(2020年20期)2020-04-13 00:30:02
        淺談Mastercam后處理器的二次開(kāi)發(fā)
        模具制造(2019年3期)2019-06-06 02:11:02
        西門(mén)子Easy Screen對(duì)倒棱機(jī)床界面二次開(kāi)發(fā)
        NFFD控制點(diǎn)分布對(duì)氣動(dòng)外形優(yōu)化的影響
        基于風(fēng)險(xiǎn)管理下的項(xiàng)目建設(shè)內(nèi)部控制點(diǎn)思考
        廣州市健康體檢人群種植修復(fù)情況的橫斷面研究
        相似材料模型中控制點(diǎn)像點(diǎn)坐標(biāo)定位研究
        2014年某院醫(yī)院感染橫斷面調(diào)查
        中醫(yī)院醫(yī)院感染橫斷面調(diào)查分析
        男女视频在线一区二区| 国内免费高清在线观看| 欧美精品人人做人人爱视频| 亚洲成人福利在线观看| 欧美日韩中文国产一区发布| 996久久国产精品线观看| 亚洲一区二区精品久久岳| 日本大片在线一区二区三区 | 久久精品国产福利亚洲av| 少妇人妻综合久久中文字幕| 久久久久人妻一区精品色欧美| 亚洲暴爽av人人爽日日碰| 亚洲AV无码国产精品久久l | 久久精品www人人爽人人| 广东少妇大战黑人34厘米视频| 国产丝袜一区二区三区在线不卡| 国产精品亚洲美女av网站| 久久久精品国产免费看| 人与动牲交av免费| 国产羞羞视频在线观看| 日本熟女人妻一区二区三区| 久久久亚洲熟妇熟女av| 国产特级毛片aaaaaaa高清| 欧美 亚洲 国产 日韩 综AⅤ | 欧美国产高清| 日本高清色一区二区三区 | 成年女人色毛片| 午夜理论片yy44880影院| 青青草国产成人99久久| 一区二区三区国产精品| 91自拍视频国产精品| 日韩人妻无码精品-专区| 国产成人精品日本亚洲专区6 | 美腿丝袜在线一区二区| 国产精一品亚洲二区在线播放| 日日爽日日操| 人妻蜜桃日产一本久道综合在线| 国产成人91久久麻豆视频| 日韩高清在线观看永久| 国产成人综合久久精品推荐免费 | 男人的天堂手机版av|