• 
    

    
    

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

      ?

      基于DXF 和STL 文件實現(xiàn)AutoCAD 與MATLAB 高效交互

      2022-01-11 10:10:38沈良朵
      關(guān)鍵詞:多邊形繪制顏色

      王 超,沈良朵

      (1.浙江海洋大學(xué)海洋工程裝備學(xué)院,浙江舟山 316022;2.大連海事大學(xué)航海學(xué)院,遼寧大連 116023)

      Auto CAD 是國際上廣為流行的繪圖工具,憑借其良好的用戶界面,通過交互菜單或命令行方式可根據(jù)需要快速畫出由基本線單元構(gòu)成的圖形。MATLAB 擁有強大的數(shù)學(xué)函數(shù)庫,可輕松繪制各種由復(fù)雜函數(shù)控制的數(shù)學(xué)圖形。如何實現(xiàn)AutoCAD 和MATLAB 兩者高效交互是本文所要研究和解決的問題。和平安等[1]借助Excel 實現(xiàn)了兩者簡單交互,但其方式繁瑣、占用內(nèi)存高且容易出錯,完全依靠手動操作。賀云花[2]提出了利用SCR 腳本實現(xiàn)二維曲線、三維曲線的轉(zhuǎn)換以及初步提到利用DXF 文件實現(xiàn)簡單的二維曲線的繪制。王蔚[3]利用MATLAB 生成的SCR 腳本文件實現(xiàn)了AutoCAD 中復(fù)雜曲線/曲面的繪制。于志偉等[4]受以上文獻的啟發(fā),集合不同方法的優(yōu)勢,通過MATLAB 直接編寫DXF 文件來實現(xiàn)復(fù)雜曲線、曲面和文字組織等繪制以及通過DXF 和STL 讀取函數(shù)來讀取AutoCAD 中的二維和三維圖像信息并繪制。本文利用承載AutoCAD 重要的數(shù)據(jù)交換功能的DXF 和STL 文件,實現(xiàn)了AutoCAD 及MATLAB 高效交互,以充分結(jié)合二者的優(yōu)勢,快速繪制所需的復(fù)雜圖形。

      1 交互方法

      1.1 AutoCAD 圖形交換文件(DXF)

      DXF 文件是AutoCAD 中的圖形交換文件。作為一種開放的矢量格式,分為ASII 格式和二進制格式;前者可讀性優(yōu)秀同時占用的空間相對較大;后者讀取性略差但勝在讀取速度快且占用內(nèi)存小。DXF 文件的組成單位為“組”,一個“組”代碼和一個“組值”構(gòu)成一個“組”,每個“組”代碼和“組值”各單獨占用一行,用以指定之后的值的類型以及用途。多個組組成“段”,每個段的開頭是以組碼“0”和字符串“SECTION”,之后是組碼“2”和表示段名的字符串。段的中間,可以使用組碼和值定義段中的元素。段的結(jié)尾,可以使用組碼“0”和字符串“ENDSEC”來定義。

      1.2 AutoCAD 圖形交換文件(STL)

      STL 文件是在計算機圖形應(yīng)用系統(tǒng)中用來表示三角形網(wǎng)格的一種文件形式,其格式簡單,應(yīng)用廣泛,是計算機圖形學(xué)處理CG,數(shù)字幾何處理如CAD,數(shù)字幾何工業(yè)應(yīng)用如3D 打印機支持的最常見文件格式。STL 文件分為二進制格式和ASCII 明碼格式,只能用來表示封閉的面或者體。ASCII 碼格式的STL 文件每一行以1 個或2 個關(guān)鍵字開頭,逐行給出三角面片幾何信息。Auto CAD 三維實體文件可以轉(zhuǎn)化為STL 格式文件,用于和其他軟件如MATLAB 之間的交互。

      1.3 CAD 讀取MATLAB 圖形文件

      實現(xiàn)AutoCAD 讀取MATLAB 圖形文件,首先要讓MATLAB 生成AutoCAD 可識別的DXF 文件,如圖1 所示。MATLAB 對于DXF 的編寫需要用到dxflib 庫,dxflib 是一個用于讀寫AutoCAD(R)DXF 文件的開源C+庫。它提供了讀取和寫入許多基本實體的功能,以及有關(guān)層和塊的信息。dxflib 是一個狀態(tài)庫,即在不被更改的情況下它能保留某些參數(shù)值在不同函數(shù)的后續(xù)調(diào)用。

      圖1 CAD 讀取MATLAB 圖形文件過程Fig.1 The process of reading matlab graphics files with Auto CAD

      利用dxflib 庫可建立生成DXF 文件的接口程序,可通過其主要的功能函數(shù)實現(xiàn)特定操作,如通過dxf_open 函數(shù)新建一個dxf 文件,通過dxf_close 函數(shù)關(guān)閉編寫完成的dxf 文件,通過dxf_set 函數(shù)設(shè)置dxf文件的屬性(層數(shù),顏色等),通過dxf_polyline、dxf_polymesh、dxf_point 等函數(shù)分別實現(xiàn)對應(yīng)折線、多邊形網(wǎng)格、點等功能的操作。

      1.4 MATLAB 讀取AutoCAD 圖形文件

      實現(xiàn)MATLAB 讀取AutoCAD 圖形文件,首先要將二維AutoCAD 圖形文件另存為DXF 文件,三維AutoCAD 圖形文件轉(zhuǎn)化為STL 文件。然后需解析DXF 和STL 文件中的各種基本的幾何圖形數(shù)據(jù),包括點、線段、多段線、圓弧、圓和各種基本三維實體等,其過程分別如圖2 和圖3 所示。

      圖2 MATLAB 讀取二維Auto CAD 圖形文件過程Fig.2 The process of reading two-dimensional Auto CAD graphics files with MATLAB

      圖3 MATLAB 讀取三維Auto CAD 圖形文件過程Fig.3 The process of reading 3D Auto CAD graphics files with MATLAB

      2 交互實例

      2.1 AutoCAD 讀取MATLAB 圖形文件

      AutoCAD 對不同類型的MATLAB 圖形文件的讀取需要借助dxf_函數(shù)創(chuàng)建的DXF 圖形文件。DXF 文件能夠被AutoCAD 直接打開,包括但不限于三維基本體、多邊形網(wǎng)格以及彩色多邊形網(wǎng)格圖像等。

      2.1.1 三維基本體讀取

      復(fù)雜曲線、曲面的創(chuàng)建離不開基元,通過DXF 文件接口程序可以得到自己想要的各種基元圖像,如球體,四面體,六面體等。在MATLAB 中運行接口程序,實例如下:

      生成的dxf 文件用Auto CAD 打開后如圖4 所示。

      圖4 AutoCAD 打開由MATLAB 生成的基元圖像Fig.4 Opening the primitive image generated by MATLAB with AutoCAD

      2.1.2 多邊形網(wǎng)格圖像讀取

      多邊形網(wǎng)格的創(chuàng)建需要用到dxf_polyline 函數(shù),它可以利用MATLAB 的矩陣數(shù)據(jù)創(chuàng)建多個面的dxf 數(shù)據(jù),并且允許為每個面指定顏色(1 個面只能指定1 個顏色)。以MATLAB 最經(jīng)典的peaks 函數(shù)為例,在MATLAB中運行接口程序:

      在這個程序中需要使用surf2patch 函數(shù)將圖像的幾何形狀和顏色數(shù)據(jù)轉(zhuǎn)換為補片格式。輸出fvc 是包含面、頂點以及顏色數(shù)據(jù)的結(jié)構(gòu)體,可以將此結(jié)構(gòu)體直接傳遞給patch 命令。利用這些矩陣數(shù)據(jù)來構(gòu)建多邊形網(wǎng)格圖形。這里默認顏色為黃色,如圖5 所示。

      圖5 AutoCAD 打開由MATLAB 生成的peaks 圖像Fig.5 Opening the image of peaks generated by MATLAB with AutoCAD

      2.1.3 彩色多邊形網(wǎng)格圖像創(chuàng)建

      很多時候利用到多邊形網(wǎng)格的時候,是需要給不同的高度或者區(qū)域區(qū)分顏色的,所以彩色多邊形網(wǎng)格的創(chuàng)建就尤為必要。DXF 原本是不支持surf2patch 函數(shù)的顏色輸出類型的,即逐頂點顏色矩陣。因此,需要通過z 坐標(biāo)來實現(xiàn)不同高度的顏色區(qū)分。通過給每個面的矩陣都準(zhǔn)備好相應(yīng)的顏色,并將原本DXF 不支持的RGB 顏色方案通過dxf_rgb2aci 函數(shù)轉(zhuǎn)化為aci 著色方案,就可以實現(xiàn)彩色多邊形網(wǎng)格的繪制。同樣以peaks 函數(shù)為例,在MATLAB 中運行如下接口程序生成dxf 文件,結(jié)果如圖6 所示。

      圖6 AutoCAD 環(huán)境下的彩色多邊形網(wǎng)格圖像Fig.6 Color polygon mesh image in AutoCAD environment

      配置顏色后的圖像相比純色的圖像更加形象且獲得的信息也更多,配合AutoCAD 進行編輯的能力也更出色,真正意義實現(xiàn)了AutoCAD 和MATLAB 通過DXF 文件共同編輯復(fù)雜圖像的目標(biāo),將MATLAB 強大的函數(shù)功能和AutoCAD 出色的圖形編輯相結(jié)合。

      2.2 MATLAB 讀取Auto CAD 圖形文件

      MATLAB 讀取Auto CAD 圖形文件時需要利用多種不同的函數(shù),對應(yīng)不同種類的AutoCAD 圖形文件輸出格式。不同類型、維度的CAD 圖形不能一概而論,必須輸出為適當(dāng)類型的圖形文件才能被MATLAB對應(yīng)的函數(shù)讀取。下文介紹了比較典型的2 種案例。

      2.2.1 基本圖元讀取

      將二維Auto CAD 圖形文件另存為DFX 文件,利用dxf2mat 函數(shù)可讀取DXF 文件中基本圖元數(shù)據(jù),包括直線、多段線、圓或圓弧等,一旦識別DXF 文件中的基本圖元信息,則可利用MATLAB 相應(yīng)的繪圖命令快速得到與DXF 文件一致的圖形,如圖7 所示。

      圖7 MATLAB 讀取Auto CAD 基本圖元Fig.7 Reading basic elements from AutoCAD with MATLAB

      2.2.2 三維實體讀取

      將三維Auto CAD 圖形文件轉(zhuǎn)化為STL 文件,利用stlread 函數(shù)可讀取STL 文件中的三角面片的幾何信息,一旦識別STL 文件中的信息,則可利用MATLAB 相應(yīng)的繪圖命令快速得到與STL 文件一致的圖像,如圖8 所示。

      圖8 MATLAB 讀取Auto CAD 三維實體Fig.8 Reading 3D entity from AutoCAD with MATLAB

      相較于AutoCAD,MATLAB 讀取后的三維實體曲面不那么圓潤,線條感更足;但是相對的,其讀取的平面也更加平滑,肉眼幾乎看不見類似鋸齒。側(cè)面反映了MATLAB 的特點,即通過參數(shù)繪制圖形,在處理此類規(guī)則圖形時占據(jù)巨大優(yōu)勢。MATLAB 將圖形的每個圖形元素(如坐標(biāo)軸、曲線、文字等)看做一個獨立的對象,系統(tǒng)給每個對象分配一個句柄,可以通過句柄對該圖形元素進行操作,而不影響其他部分。

      3 結(jié)論

      本文以DXF 和STL 圖形處理文件為媒介,實現(xiàn)了AutoCAD 和MATLAB 的數(shù)據(jù)高效互通,將兩者的優(yōu)勢相結(jié)合共同繪圖,從而實現(xiàn)1+1 大于2 的效應(yīng)。對于既有線性元素,又有函數(shù)元素構(gòu)成的復(fù)雜圖形,本方法將大幅提高繪圖效率并實現(xiàn)精準(zhǔn)繪圖。

      猜你喜歡
      多邊形繪制顏色
      Art on coffee cups
      多邊形中的“一個角”問題
      多邊形的藝術(shù)
      解多邊形題的轉(zhuǎn)化思想
      多邊形的鑲嵌
      放學(xué)后
      童話世界(2018年17期)2018-07-30 01:52:02
      認識顏色
      特殊顏色的水
      和顏色捉迷藏
      兒童繪本(2015年8期)2015-05-25 17:55:54
      在轉(zhuǎn)變中繪制新藍圖
      新丰县| 三河市| 图们市| 洪江市| 常宁市| 白水县| 武定县| 古丈县| 邮箱| 屏东县| 乌兰浩特市| 新宁县| 安新县| 沙田区| 巴中市| 湖北省| 敦化市| 洪江市| 青冈县| 陆丰市| 沙雅县| 陆良县| 古田县| 蕉岭县| 延吉市| 阿拉善盟| 瑞昌市| 青岛市| 咸阳市| 昭苏县| 永吉县| 西畴县| 贵定县| 沧源| 辽中县| 梅州市| 平利县| 丹阳市| 曲沃县| 桐庐县| 锡林浩特市|