999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于.NET編程增強Excel與CAD的數據交流功能
——以水利工程設計應用為例

2015-01-04 01:47:33
水利規劃與設計 2015年7期
關鍵詞:二次開發程序

馬 宇

(遼寧省大伙房水庫輸水工程建設局,遼寧沈陽110166)

基于.NET編程增強Excel與CAD的數據交流功能
——以水利工程設計應用為例

馬 宇

(遼寧省大伙房水庫輸水工程建設局,遼寧沈陽110166)

為解決水利工程設計中Excel與CAD的數據交流問題,采用基于C#.NET編程的方式來增強CAD對Excel文件中數據的讀取和編輯。

數據交流;Excel;CAD;水利工程設計

1 引言

Excel和CAD是在水利工程設計中廣泛應用的商業軟件,Excel方便保存、編輯表格數據,CAD有效輔助設計繪制工程圖。在設計中,工程師們往往需要把大量的Excel數據轉換成直觀的CAD中的點、線等圖元,在這些圖元的基礎上進行工程設計;同時也需要把CAD中的一些圖元屬性提取出來保存到Excel文件中,以便于計算工程量和確定控制坐標等。如何解決好Excel與CAD之間的數據交流是提高水利工程設計效率和質量的重要環節。

Excel和CAD均屬于通用軟件,雖然CAD中個別功能提供了對Excel文件的簡單支持,但由于水利工程上邊界條件復雜,隨機性強、設計面廣[1],CAD的自帶功能無法滿足水利工程設計中大量數據交流便捷、準確的要求,設計人員的數據交流操作繁瑣而重復。

Excel和CAD軟件均提供了優良的二次開發接口,隨著編程技術的發展和軟件版本的升級,對這兩種軟件進行二次開發的門檻也逐漸降低,基于微軟公司提供的.NET平臺對Excel和CAD進行二次開發就是一種較為便捷的方法。

2 實現數據交流的思路

借助Excel和CAD提供的二次開發接口,編寫一個程序,作為橋梁搭接Excel和CAD程序,程序本身應具有打開、讀取、修改、保存Excel文件和CAD文件的功能,并應具備實時顯示設計成果和簡潔的操作界面等特點。

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

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

創建一個CAD可以加載調用的動態鏈接庫程序,程序同時引用ExcelCOM組件。在CAD環境下啟動動態鏈接庫程序,讀取Excel文檔內容,保存到程序的數據變量中,然后調用CAD中的繪圖類,根據讀取的數據繪圖;或者在CAD中借助提取圖形對象函數,提取CAD圖紙中的點、線等圖元的基本屬性,通過程序分析計算形成需要的數據成果,寫入到Excel文件中。.NET平臺上,可以實現Excel與CAD數據的雙向流通,編程思路見圖1。

圖1 編程溝通Excel和CAD數據流程圖

3 編程實現操作Excel與CAD

3.1 編程語言及編譯環境

.NET平臺又稱.NETFramework,目前最新的是4.5版本。是由微軟開發的一個致力于敏捷軟件開發、快速應用開發、平臺無關性、跨語言編程和網絡透明化的軟件開發平臺[5]。.NET包含四種核心語言:VB、VC++、C#和J#[6],本文選用C#進行編程,C#是微軟為.NETFramework量身訂做的程序語言[7],具有使用簡易和功能強大的特點。目前開發.NET平臺程序,最高效的編譯調試平臺莫過于微軟公司推出的VisualStudio(簡稱VS)集成開發環境。本文采用VS2010版本進行編譯環境搭建。考慮使用習慣和程序的兼容性,CAD采用2007版本,Excel采用2003版本。

首先,在VS中新建一個項目,模板采用C#下的“類庫”,.NET平臺選擇2.0版本(不同版本CAD對應不同版本.NET,通過較低版本.NET編譯的程序一般可以在較高版本CAD中運行)。在“解決方案”中添加引用“acdbmgd.dll”和“acmgd. dll”,并設置“復制本地”為“False”。

然后,引用Excel的COM插件,不同版本Excel對應的COM插件版本有所不同,2003版本的Excel的COM插件名稱為“MicrosoftExcel11.0ObjectLibrary”。

最后,設置程序的“調試”屬性,啟動外部程序路徑設為本機CAD2007的“acad.exe”程序路徑。至此,程序的編譯平臺就搭建完成。

3.2 編程操作Excel文檔

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

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

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

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);∥打開文件

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

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

sheet.Cell[1,2]=”Level”;∥修改B1單元格內容為Level

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

app.Quit( );∥退出Excel進程,非常重要,不然Excel的進程將一直在電腦后臺運行

3.3 編程操作CAD

通過.NET平臺操作CAD可以實現CAD的絕大部分功能,可調用的類和函數非常多,具體可參考Autodesk公司提供的CAD二次開發幫助手冊。較為基礎和常用的CAD操作有繪制圖元和提取圖元的屬性。例如,根據數據繪制一條多段線和提取某點的坐標,以下是編程的主要內容。

首先添加using Autodesk.AutoCAD.ApplicationServices;

using Autodesk.AutoCAD.Runtime;

using Autodesk.AutoCAD.EditorInput;

在新建的類中添加以下代碼:

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

publicvoidRunApp( )

{∥繪制多段線

intn=pts.Count;∥獲取保存多段線坐標的數組pts的點數

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

for(inti=0;i<n;i++)∥設置多段線各節點坐標

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

Editoreditor=Autodesk.AutoCAD. Application Services.Application.Document Manager.MdiActive Document.Editor;∥新建一個編輯對象

Prompt Pointoptionsoptions=new Prompt Pointoptions(" 請在圖紙上選取點");

options.AllowNone=true;∥提取坐標

Point3dcenPt=editor.GetPoint(options).Value;∥把點坐標保存到cenPt變量中}

3.4 加載調用程序

通過VS編譯后生成動態鏈接庫程序。在打開的CAD中輸入命令“netload”后彈出對話框,在對話框中找到生成的動態鏈接庫程序路徑,加載程序。然后輸入啟動程序的命令,例如上面一個例子中,需要輸入“SLCAD”命令啟動程序功能。

4 編程實例

實際編程中,可以借助.NET平臺創建窗口,給Excel文件的開啟和關閉設置相應的按鈕或提示。如果頻繁調用CAD中的主要函數,每次編寫代碼較為繁瑣,可以自定義類和函數,把常用的功能模塊化。例如繪制多段線的功能,可以模塊化為函數:

publicstaticobjectIdAddPline(Point2dCollectionpts,doublewidth)

∥函數的參數為保存多段線點的數組和擬畫多段線的線寬

{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;∥返回多段線對象}

catch∥程序異常處理

{objectIdnullId=objectId.Null;returnnullId;}}

4.1 讀取Excel中橫斷面數據,在CAD中繪制橫斷面圖

在水利工程設計中,經常要在橫斷面圖上進行工程布置和計算工程量等,實測橫斷面數據通常以Excel文件保存,斷面數目多,且格式類似。如果逐一手繪橫斷面,不僅工作量極大,而且準確性差。本文通過.NET編程實現讀取Excel中橫斷面數據,在CAD中繪制橫斷面圖的功能,即通過程序讀取如圖2中的Excel數據,調整程序參數,在CAD中繪制如圖4的橫斷面圖。

4.2 在CAD圖中拾取控制點,并把控制點坐標保存到Excel文件中

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

圖2 Excel中橫斷面數據格式

圖3 程序界面截圖

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

圖5 CAD文件中控制點位置

圖6 程序界面截圖

圖7 提取坐標輸入到Excel中成果

5 結語

基于.NET平臺,憑借Excel和CAD提供的二次開發接口,可以較方便地實現Excel與CAD之間的數據交流功能,簡化水利設計過程中的操作步驟,提高繪圖、計算的速度和精度。由于篇幅限制,本文只簡單介紹了Excel和CAD二次開發的最基本功能,在實際生產工作中,結合Excel和CAD的二次開發運用,有著更大的靈活性和擴展空間。

[1]梁國偉等.CAD二次開發在水利水電工程制圖中的應用[J].水科學與工程技術,2006(02):50-51.

[2]郭來軍.淺談EXCEL二次開發的三種方式[J].遼寧科技學院學報,2007(04):23+29.

[3]王永輝,胡青泥與李紅彩.AutoCAD二次開發方法的研究[J].計算機系統應用,2007(03):94-96+100.

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

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

[6]黃箐,馬德山,項鏈.基于.NET實現多語言互操作性[J].西北民族大學學報(自然科學版),2007(02):38-44.

[7]蔡守允,楊大明,朱其俊.模型試驗流速測量儀器的分析研究[J].水資源與水工程學報,2007(03).

TP316

:B

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

10.3969/j.issn.1672-2469.2015.07.021

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

猜你喜歡
二次開發程序
淺談基于Revit平臺的二次開發
甘肅科技(2020年20期)2020-04-13 00:30:02
西門子Operate高級編程的旋轉坐標系二次開發
淺談Mastercam后處理器的二次開發
模具制造(2019年3期)2019-06-06 02:11:02
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
Micaps3.2 版本二次開發入門淺析
西藏科技(2015年12期)2015-09-26 12:13:51
ANSYS Workbench二次開發在汽車穩定桿CAE分析中的應用
汽車零部件(2014年5期)2014-11-11 12:24:32
主站蜘蛛池模板: 欧美视频在线播放观看免费福利资源| 色婷婷色丁香| 日韩欧美国产三级| 高清久久精品亚洲日韩Av| 91福利片| 婷婷成人综合| 亚洲人视频在线观看| 国产成人精品亚洲77美色| 2021国产v亚洲v天堂无码| 好吊色妇女免费视频免费| 中文一级毛片| 区国产精品搜索视频| 婷婷色丁香综合激情| 中字无码av在线电影| 亚欧成人无码AV在线播放| 中文字幕人妻无码系列第三区| 在线欧美a| 国产高颜值露脸在线观看| 欧洲日本亚洲中文字幕| 亚洲人成网线在线播放va| 东京热av无码电影一区二区| 亚洲日韩国产精品无码专区| 亚洲国产在一区二区三区| 毛片在线播放a| 国产毛片不卡| 婷婷午夜天| 四虎永久免费地址在线网站| 国产午夜精品鲁丝片| 亚洲第一在线播放| 亚洲欧美日韩视频一区| 午夜视频免费试看| 国产免费看久久久| 黄色网页在线观看| a级毛片免费在线观看| 国产在线视频欧美亚综合| 精品一区二区三区四区五区| 亚洲欧美日韩成人在线| 人人91人人澡人人妻人人爽| 日韩欧美中文| 欧美中文一区| 国产精品网址在线观看你懂的| 国产在线自乱拍播放| 欧亚日韩Av| 重口调教一区二区视频| 尤物特级无码毛片免费| 日韩二区三区| 国产精品成人第一区| 三区在线视频| 国产精品午夜电影| 99中文字幕亚洲一区二区| 日韩经典精品无码一区二区| 久久一色本道亚洲| 久久成人免费| 亚洲精品视频在线观看视频| 综合成人国产| 无码日韩视频| 91年精品国产福利线观看久久| 国产丰满成熟女性性满足视频| 久久黄色免费电影| 亚洲男人在线天堂| 91久久国产热精品免费| 99久久精品美女高潮喷水| 国产91精品久久| 国产91全国探花系列在线播放 | 国产精品综合色区在线观看| 国产精品深爱在线| 久久香蕉欧美精品| 精品国产Av电影无码久久久| 在线欧美一区| AV不卡在线永久免费观看| 国产一区二区影院| 天天躁日日躁狠狠躁中文字幕| 在线亚洲小视频| 欧美日韩一区二区三区在线视频| 国产午夜无码片在线观看网站| 国产亚洲欧美在线视频| 亚洲香蕉久久| 尤物午夜福利视频| 国产又粗又猛又爽视频| 精品一区二区三区视频免费观看| 一级成人欧美一区在线观看| 亚洲第一视频网站|