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

利用AutoCAD -VBA 編程繪制差熱-熱重曲線

2020-06-24 04:58:54岳增川張朝輝
遼寧師專學報(自然科學版) 2020年1期
關鍵詞:程序

岳增川,張朝輝

(朝陽師范高等專科學校 生化工程系,遼寧 朝陽 122000)

0 引言

AutoCAD(Autodesk Computer Aided Design)是一款科研與工程領域常用的計算機輔助設計軟件,具有圖形繪制和編輯功能完善、二次開發方便、數據交換能力強的特點[1].利用AutoCAD繪制的曲線,數據擬合精準,讀數直觀準確,可方便地對曲線進行積分、微分等操作,此外,利用AutoCAD繪制的曲線文件在交換、傳遞和輸出過程中不會出現失真現象,因此得到了廣大科研、工程設計工作者的認可.但依次繪制坐標、逐個確定數據點、連線作曲線擬合圖的手動繪圖方式,只能適應小數據量的繪圖任務,而現代大型分析儀器檢測所得的數百甚至上萬個數據,顯然無法通過手動繪圖的方式完成其擬合曲線的繪制.因此,本文結合Excel的數據運算功能和AutoCAD中內嵌VBA模塊的編程功能,以差熱-熱重分析儀測得的數據為例,設計了一種可自動、批量化繪制大數據量曲線的方法.為方便大部分大型分析儀器使用者,該繪圖方法源程序中所用到的語言與算法都比較基礎,較易為非專業編程人員所掌握.研究中所用軟件版本為Microsoft Excel 2010和AutoCAD 2008.

1 數據整理

差熱-熱重分析數據由島津TG-60AH型差熱-熱重儀測得,樣品為某高分子材料,于鉑金坩堝內完成實驗.基本實驗條件:空氣氣氛,樣品初始質量4.938 mg,初始溫度70 ℃,升溫速度為10 ℃/min,終點溫度為250 ℃,數據采集間隔為1.00 s.原始數據文件為“.txt”格式的文本文檔,主要數據內容有Time(時間,s)、Temp(溫度,℃)、DTA(差熱,μV)、TGA(質量,單位mg)四項.常用的差熱-熱重曲線圖中橫坐標為Temp,左縱坐標為DTA,右縱坐標為TGA,因此我們只需將以上三個項目的數據從文本文檔中復制到Excel文件中即可.

Excel中原始數據的截圖如圖1所示(由于數據眾多,截圖只展示Excel工作表頂端和末端的單元格),Temp、DTA和TGA每項均有1080個數據,位于A2~A1081、B2~ B1081、C2~ C1081單元格中,Temp的數值大小在69~251之間,DTA的數值大小在-11~13的范圍內,TGA的數值大小在3.49~4.95的范圍內.

為了能夠將差熱-熱重曲線在AutoCAD中直觀、準確且盡可能美觀地繪制出來,我們將以上三項數據的數值經相應運算轉換成AutoCAD中具體的長度值,以適應AutoCAD中曲線的坐標軸范圍和刻度單位.轉換完成的數據保存于文件名為“TG-DTA”的Excel文件的“sheet1”工作表中.具體轉換過程如下:以Temp為橫坐標,在AutoCAD中以1個長度單位表示1 ℃,坐標軸范圍為0~300 ℃,坐標線起點坐標為(0,0,0),終點坐標為(300,0,0);以DTA為左縱坐標,在AutoCAD中以10個長度單位表示1 μV,坐標軸范圍為-15~15 μV,坐標線起點坐標為(0,0,0),終點坐標為(0,300,0);以TGA為右縱坐標,在AutoCAD中以 125個長度單位表示1 mg,坐標軸范圍為3.0~5.4 mg,坐標線起點坐標為(300,0,0),終點坐標為(300,300,0).即AutoCAD中三個坐標軸的線長均為300個長度單位.轉換后數據見圖2中Excel工作表的D、E、F列,其中D列數值=A列數值,E列數值=B列數值×10+150,F列數值=(C列數值-3)×125. 三項數據每項均有1080個數據,位于D3~D1082、E3~E1082、F2~F1083單元格中,D列數值大小在69~251之間,E列數值大小在40~280的范圍內,F列的數值大小在61.25~243.75的范圍內.

2 通過VBA編程繪制差熱-熱重曲線

2.1 調出VBA 程序編輯器

首先,打開AutoCAD 程序,將工作空間設置為“二維草圖與注釋”.通過“Alt + F8”快捷鍵打開“宏”窗口,然后通過點擊“VBA 管理器”按鍵進入“VBA 管理器”窗口,點擊“新建”按鍵新建一個工程,最后點擊“VBA 編輯器”按鍵調出“VBA 程序編輯器”.由于繪圖過程中需要聯用AutoCAD和Excel兩個軟件,因此編程前需在“VBA程序編輯器”界面下的“工具”菜單中關聯Excel軟件[2].完成以上各項操作后,接下來開始進行曲線繪制的編程.

2.2 繪制差熱-熱重曲線坐標

首先繪制坐標格,坐標格的最終效果圖如圖3所示(圖中L1、L2、L3、L4、L12和L22等標注內容與相關箭頭指示線是特意為方便介紹程序語言所繪制,并非程序自動生成內容).源程序如下:

Public Sub 畫坐標格()

Dim L(1 To 4) As Object, p1(0 To 2) As Double, p2(0 To 2) As Double, p3(0 To 2) As Double, p4(0 To 2) As Double, p5(0 To 2) As Double, p6(0 To 2) As Double

p1(0) = 0: p1(1) = 0: p1(2) = 0

p2(0) = 0: p2(1) = 300: p2(2) = 0

p3(0) = 300: p3(1) = 0: p3(2) = 0

p4(0) = 50: p5(1) = 0: p5(2) = 0

p5(0) = 50: p4(1) = 5: p4(2) = 0

p6(0) = 0: p5(1) = 50: p5(2) = 0

p7(0) = 300: p6(1) = 50: p6(2) = 0

聲明變量,L表示坐標線,L1-L4所代表的具體坐標線如圖3所示,L1、L2分別表示DTA坐標線和Temp坐標線,L3和L4分別代表Temp坐標線的刻度線和DTA坐標線的刻度線,p為坐標線L的端點,p(0-2)依次表示各點在x、y、z軸的坐標值[2-3].

Set L1 = ThisDrawing.ModelSpace.AddLine(p1, p2)

Set L2 = ThisDrawing.ModelSpace.AddLine(p1, p3)

Set L3 = ThisDrawing.ModelSpace.AddLine(p4, p5)

Set L4 = ThisDrawing.ModelSpace.AddLine(p6, p7)

L4.Linetype = "Dashed2"

L4.LinetypeScale = 2

做出各坐標線,并將L4設定為“Dashed2”線型,比例因子為2.

Dim L12 As Variant, L22 As Variant

L12 = L1.Offset(-300): L22 = L2.Offset(300)

通過將坐標線L1、L2偏移得到L12、L22,其中L12表示TGA坐標線.

Dim I As Integer

For I = 1 To 4

Dim Ls() As Variant

ReDim Ls(I)

Ls(I) = L3.Offset(-50 * I)

Next I

Dim J As Integer

For J = 1 To 4

Dim Lh() As Variant

ReDim Lh(J)

Lh(J) = L4.Offset(50 * J)

Next J

通過將刻度線L3、L4偏移得到其余的刻度線.

ZoomExtents

顯示整個圖形.

End Sub

程序編碼完成后,通過點擊“工具”菜單下的“Run Sub/UserForm”命令,即可在AutoCAD主界面中繪制出相應內容.

接下來通過編程完成對坐標值的標注,以左縱坐標軸(DTA坐標軸)為例,源程序如下:

Public Sub 標注DTA值()

Dim A(1 To 8) As AcadText, tA(1 To 8) As String

Dim PA1(0 To 2) As Double, PA2(0 To 2) As Double

Dim PA3(0 To 2) As Double, PA4(0 To 2) As Double

Dim PA5(0 To 2) As Double, PA6(0 To 2) As Double

Dim PA7(0 To 2) As Double, PA8(0 To 2) As Double

tA1= "-15.0":tA2= "-10.0":tA3 ="-5.0":tA4= "0.0"

tA5= "+5.0":tA6= "+10.0": tA7= "+15.0":tA8 ="DTA/μV"

PA1(0) = -23: PA1(1) = -3: PA1(2) = 0

PA2(0) = -23: PA2(1) = 47: PA2(2) = 0

PA3(0) = -23: PA3(1) = 97: PA3(2) = 0

PA4(0) = -23: PA4(1) = 147: PA4(2) = 0

PA5(0) = -23: PA5(1) = 197: PA5(2) = 0

PA6(0) = -23: PA6(1) = 247: PA6(2) = 0

PA7(0) = -23: PA7(1) = 297: PA7(2) = 0

聲明變量,以A表示CAD中的文字,txt表示具體文字內容,PA表示文字的插入點,PA(0-2)依次表示文字插入點在x、y、z軸的坐標值.

Set A1 = ThisDrawing.ModelSpace.AddText(tA1, PA1, 6)

Set A2 = ThisDrawing.ModelSpace.AddText(tA2, PA2, 6)

Set A3 = ThisDrawing.ModelSpace.AddText(tA3, PA3, 6)

Set A4 = ThisDrawing.ModelSpace.AddText(tA4, PA4, 6)

Set A5 = ThisDrawing.ModelSpace.AddText(tA5, PA5, 6)

Set A6 = ThisDrawing.ModelSpace.AddText(tA6, PA6, 6)

Set A7 = ThisDrawing.ModelSpace.AddText(tA7, PA7, 6)

插入各坐標值,文字大小為6.

PA8(0) = -35: PA8(1) = 150: PA8(2) = 0

Set A8 = ThisDrawing.ModelSpace.AddText(tA8, PA8, 6)

A8.Rotate A8.InsertionPoint, 1.570796

插入坐標軸名稱“DTA/μV”,文字大小為6,并將文字進行旋轉,旋轉值為1.570 796 rad,約為0.5π rad.

ZoomExtents

End Sub

同理,可通過編程對橫坐標軸(Temp坐標軸)和右縱坐標軸(TGA坐標軸)完成標注.

2.3 繪制差熱-熱重曲線

在完成差熱-熱重曲線坐標的繪制后,便可通過編程,利用Excel表中D、E、F列數據進行差熱-熱重曲線的繪制.以利用Excel表中D、E列數據繪制差熱(DTA)曲線為例,源程序如下:

Public Sub 曲線()

Dim Excl As Excel.Application

Dim Excl_Book As Excel.Workbook

Dim Excl_Sheet As Excel.Worksheet

依次對Excel程序、Excel工作薄、Excel工作表進行變量聲明[4].

Set Excl = CreateObject("Excel.Application")

Set Excl_Book = Excl.Workbooks.Open("E:TG-DTA.xlsx")

Set Excl_Sheet = Excl_Book.Sheets("sheet1")

依次打開Excel程序,打開E盤中名稱為“TG-DTA”的Excel文件,打開sheet1工作表.

Dim DTALine As Object

Dim I As Integer

以I表示Excel表中第4列(D列)或第5列(E列)數據的行數.

I = 1

Do

If IsEmpty(Excl_Sheet.Cells(I, 4)) Then Exit Do

當第4列(D列)的第I行的單元格中沒有數據時,結束循環.

I = I + 1

行數I值加1,繼續循環,判定D列第I行單元格是否為空.

Loop

I = I-1

由于程序結束時第I行單元格為空,因此該列數據實際行數為I-1.

Dim PDTA() As Double

N = (I - 2) * 2

N為Excel表中D列和E列數值型數據的總個數,因為D列和E列的前兩行單元格中的內容為文字,并不是實驗數值,因此N=(I-2) × 2.

ReDim PDTA(1 To N)

Dim J As Integer

For J = 3 To I

PDTA(J * 2 - 5) = Excl_Sheet.Cells(J, 4)

PDTA(J * 2 - 4) = Excl_Sheet.Cells(J, 5)

Next J

PDTA(1)為第一個點的橫坐標,即Excel表中第3行第4列(D列)單元格中的Temp值,PDTA(2)為第一個點的縱坐標,即Excel表中第3行第5列(E列)單元格中的DTA值,以此類推.

Set DTALine=ThisDrawing.ModelSpace.AddL

-ightWeightPolyline (PDTA)

DTALine.Color=5

畫多段線,并將多段線的顏色改成藍色.

ZoomExtents

顯示圖形.

Excl.Application.Quit

關閉Excel程序.

End Sub

編碼完成后,運行程序即可繪制出差熱曲線,但此時繪制的曲線為多段線,需要將其擬合為更為光滑的樣條曲線.具體操作為:通過鼠標左鍵選中需要修改的曲線,依次點擊AutoCAD主界面下的“修改、對象、多段線”指令,然后在命令欄中輸入“S”,敲擊回車鍵后,即可將曲線的形式由多段線轉換為樣條曲線.同理,可通過編程利用Excel表中D列和F列數據完成熱重(TGA)曲線的繪制.最終完成的差熱-熱重曲線圖如圖4 所示.

2.4 多組平行數據的批量化繪制

當有多組差熱-熱重分析的平行實驗數據時,可將上述Excel文件中相應Temp、DTA和TGA項的原始數據進行替換后,直接加載該程序代碼文件來完成對應曲線的自動化、批量化繪制,或者將原始實驗數據分別保存在Excel文件中的多個工作表(sheet)內,通過逐次修改程序代碼中所調用工作表名稱的方式,即“Set Excl_Sheet = Excl_Book.Sheets("sheet1")”中的“sheet1”,來實現相應曲線的繪制.

3 結語

本文以差熱-熱重曲線為例,在利用Excel軟件對原始數據進行簡單處理后,通過AutoCAD軟件內嵌的VBA模塊進行簡單編程,便可實現差熱-熱重曲線的自動繪制,且源程序簡單易懂,可為編程基礎較差甚至零編程基礎的大型分析儀器使用人員所熟練掌握.氣相/液相色譜譜圖、X-射線衍射圖、電化學分析曲線、拉曼光譜與紅外光譜譜圖等數據量較大的曲線繪制時均可參照該方法.另外,當有多組平行實驗數據時,通過該方法還可以實現大數據量曲線的批量化繪制.該方法可為大型分析儀器操作者及相關科研人員的實驗報告編制、論文寫作工作提供一定的參考價值.

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 波多野结衣在线一区二区| 国产91高跟丝袜| 伊人久久婷婷| 五月婷婷精品| 日本手机在线视频| 99激情网| 国产小视频a在线观看| 无码中文字幕乱码免费2| 久久人午夜亚洲精品无码区| 亚洲国产中文精品va在线播放| 日韩亚洲综合在线| 日本色综合网| 久久毛片基地| 一本大道香蕉高清久久| 啦啦啦网站在线观看a毛片| 久久免费精品琪琪| 精品無碼一區在線觀看 | 国产在线八区| 亚洲第一综合天堂另类专| 成年看免费观看视频拍拍| 影音先锋丝袜制服| 亚洲av色吊丝无码| 亚洲天堂视频在线观看免费| 在线国产资源| 午夜一区二区三区| 色老二精品视频在线观看| 国产极品美女在线| 一级一级特黄女人精品毛片| 自拍亚洲欧美精品| 国内精品自在自线视频香蕉 | 一级一毛片a级毛片| 999国内精品久久免费视频| 91蜜芽尤物福利在线观看| 毛片免费观看视频| 国产精品3p视频| 精品国产成人三级在线观看| 国产美女叼嘿视频免费看| 夜夜操国产| 无码中文字幕精品推荐| 亚洲欧美精品日韩欧美| 日本精品中文字幕在线不卡| a毛片免费看| 国产精品男人的天堂| 这里只有精品在线| 欧美一级在线| 中国国产A一级毛片| 黄色网址手机国内免费在线观看| 国产视频入口| 色久综合在线| 亚洲一欧洲中文字幕在线| 国产精品人成在线播放| 蜜臀av性久久久久蜜臀aⅴ麻豆| 青青草a国产免费观看| 69av在线| 国产av一码二码三码无码| 伊人91视频| 特级欧美视频aaaaaa| 日韩中文精品亚洲第三区| 日韩AV手机在线观看蜜芽| 五月天综合网亚洲综合天堂网| 欧美福利在线观看| 欧美精品色视频| 九九精品在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 欧美无专区| 久久久久国色AV免费观看性色| 久久99国产精品成人欧美| 高清无码一本到东京热| 欧美一级夜夜爽www| 国产第三区| 天天综合色天天综合网| 无码'专区第一页| 日本中文字幕久久网站| 成人一级黄色毛片| 欧美19综合中文字幕| 伊人成人在线视频| 国产高潮视频在线观看| 午夜精品区| 国产精品视频999| 精品国产自在现线看久久| 亚洲三级视频在线观看| 色偷偷一区二区三区|