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

DXF文件中直線數據的讀取及重新繪制流程

2021-08-01 10:55:26閆帥鵬羅孟勤
科技經濟導刊 2021年20期

閆帥鵬 ,羅孟勤

(中國電子科技集團公司第二十九研究所,四川 成都 610036)

1. DXF文件信息元素構成

一幅完整的CAD圖形會包含圖層、線型、直線、多段線、圓弧、橢圓、樣條曲線等多種元素信息。為了更加完整且有條理地解析圖形原有的信息,并還原出最符合加工要求的圖形[1],本文將DXF文件讀入的流程分為幾個功能模塊,文件讀入流程如圖1所示。本文對于DXF文件中的圖形元素的解析分為五個模塊[2]:直線元素讀入模塊、多段線元素讀入模塊、橢圓(弧)元素讀入模塊、圓(弧)元素讀入模塊、樣條曲線元素讀入模塊。

圖1 DXF文件讀取流程圖

2.直線數據的讀寫流程設計

直線作為繪圖的基礎,在近乎所有的CAD制圖中都會出現。因此,將直線的讀寫作為整個DXF文件解析的基礎是很具有代表性的。對于直線的關鍵數據就是其起始點的坐標值[3]。根據DXF文件的編碼規則,直線數據段的結構如下:直線關鍵字為“LINE”;“LINE”后面出現的組碼“10”的下方,代表示起點X坐標值;“LINE”之后出現的組碼“20”的下方,代表起點Y坐標值;“LINE”之后出現的組碼“11”的下方,代表終點X坐標值;“LINE”之后出現的組碼“21”的下方,代表終點Y坐標值。根據上述結構,分析得到直線數據段的讀取流程,如圖2所示。在直線數據段讀取的過程中,需要特別注意對于不同線型的區分,這樣做的目的有兩個:更加全面地讀取所有線型的數據,完整還原CAD圖形;便于在進行激光劃片的過程中把不需要進行實際操作的虛線、點畫線等剔除掉。對于將直線還原到軟件界面上,有兩種方案可以選擇。一是將起始點的坐標值提取出來,利用直線計算的公式便可直接計算出直線方程,然后將起始點的橫坐標或者縱坐標按照相當小的差值進行插值計算,得到整條直線的點坐標,最后通過描點的方式完成直線,其流程如圖3所示。二是利用編程軟件中自帶的直線繪制函數進行繪制。

圖2 直線數據讀取流程圖

圖3 直線數據重新繪制流程圖

通過對比,方案1需要用戶自行編寫相應算法,過程復雜;而方案2可以方便快捷地實現圖像的繪制。但是,在使用激光劃片機進行操作時,對于運動終端的控制,仍需按照方案1的算法逐點進行插補,完成對直線的激光劃片。直線繪制的關鍵點:直線的繪制中,按照斜率公式計算時,由于可能出現橫坐標相等的分母為零的情況,所以分情況討論。一是分母不為零時,按公式求方程;二是分母為零時,只是Y方向的坐標變化。在判斷分母時需要注意,由于DXF文件中讀出的相同坐標值有可能在小數點后的3開始就不一樣,所以直接判斷分母是否為零會出現錯誤導致該直線基本沒有繪制的點出現(X坐標基本相同,如果按公式求方程,則橫坐標幾乎無法變化,循環就已經結束了)。因此,在判斷分母為零時,不直接判斷是否等于0,而是加入一定的冗余量,只要ΔX<0.001時,就判斷其屬于分母等于零的情況。對于直線的繪制,通過判斷起始點與終止的上下以及左右的位置,來確定步長的正負,以確保繪制的順序。

3.基于VB.NET對DXF文件中直線數據讀取的軟件設計

上文已經詳細闡述了直線數據段的讀寫流程。基于VB.NET的特點,對軟件編制過程中所需的重難點進行講解。對于圖元中包含的直線類數據,可以定位一個類名為“Line”。這個類由以下屬性組成:StartX,表示原始起點的X坐標;StartY,表示原始起點的Y坐標;EndX,表示原始終點的X坐標;EndY,表示原始終點的Y坐標;LaserStartX,表示轉換后的起點X坐標;LaserStartY,表示轉換后的起點Y坐標;LaserEndX,表示轉換后的終點X坐標;LaserEndY,表示轉換后的終點Y坐標。在讀取坐標點數據時,由于DXF文件讀入時均是文本形式,也就是說讀入的數據全部是字符串,并不能夠參與數值運算。本軟件利用VB.NET所擁有的Csng函數功能,可以使Single類型的單精度浮點數由字符串轉換而得。同時,利用Round函數,將數據精度控制在小數點后三位。舉例說明:Line.StartX=Math.Round(Csng(dxfmember(i)))

上式表示將dxfmember數組中的第i項讀出,然后利用Csng函數和Round函數,將第i項所表示的字符串轉換為此時該條直線類的原始起點X坐標值。

在對直線類進行繪制時,可以采用Graphics的畫圖類在軟件界面進行畫圖,其中Graphics是VB.NET自帶功能函數。該類的使用首先需要定義一個Graphics類的對象,名為Draw,其定義格式為:

Public Draw As Graphics

同時,還需要定義一個畫筆類的對象,名為ObjPen,其格式為:

Public objPen As New Pen(Color.DeepPink, 1)

其中“Color.DeepPink”表示畫筆顏色,后面的“1”表示畫筆的寬度為1個像素。在進行繪制時,直接調用DrawLine模塊,輸入下列參數:畫筆對象; 直線起點X坐標值;直線起點Y坐標值;直線終點X坐標值;直線終點Y坐標值。需要特別注意,由于VB.NET在繪制圖形時,其XOY坐標系的定義是屏幕的左上角為(0,0)點,如圖4所示。

圖4 VB.NET繪制坐標系

而CAD原圖形的XOY坐標系定義是以左下角為(0,0)點,如圖5所示。

圖5 CAD原圖形的XOY坐標系

通過對比圖4和圖5可以得知,對于任意的坐標點在繪制時,其橫坐標保持不變,但其縱坐標的值需要由Y軸方向所設定的最大值與坐標點縱坐標的數值相減才能正確表達。也就是說,需要由所設定圖幅的高度值減去坐標點縱坐標值,從而得到繪圖所使用的縱坐標值。綜上所述,完整的直線繪制命令如下:

Draw.DrawLine(objPen, Line.LaserStartX, Form1.PictureBox1.Height - Line.LaserStartY, Line.LaserEndX, Form1.PictureBox1.Height - Line.LaserEndY)

其中,objPen代表繪制所用的畫筆;LaserStartX表示轉換后的起點X坐標;LaserStartY表示轉換后的起點Y坐標;Form1.PictureBox1.Height表示繪圖界面的高度值;LaserEndX表示轉換后的終點X坐標;LaserEndY表示轉換后的終點Y坐標。參照上面的命令,就可以將不同起始點的所有直線數據全部完整地繪制在軟件界面上。

4.結論

本文根據實際應用的需求,通過讀取DXF文件獲得了AUTOCAD文件中直線數據的幾何信息,提取了直線數據存儲數據,并將其轉化,進行重新繪制,基于VB軟件進行編程。這可以在實際的加工生產中促進加工效率的提升。

主站蜘蛛池模板: 亚洲国产精品久久久久秋霞影院| 无码精品国产VA在线观看DVD| 在线观看欧美国产| 成人毛片免费在线观看| 国产成人精品高清不卡在线| 91精品小视频| 无码福利视频| 国产理论精品| 成人久久精品一区二区三区 | 天天做天天爱天天爽综合区| 制服丝袜亚洲| 麻豆国产在线观看一区二区| 99在线视频精品| 欧美色亚洲| 中文字幕在线视频免费| 久久久黄色片| 国产视频一二三区| 黄色一及毛片| 色欲综合久久中文字幕网| 国产97公开成人免费视频| 亚洲视频三级| 99热这里只有精品免费| 青青国产成人免费精品视频| 老司机久久99久久精品播放| 久久青青草原亚洲av无码| 国产成a人片在线播放| 国产无码网站在线观看| 青青草久久伊人| 亚洲午夜综合网| 国产经典在线观看一区| 成人字幕网视频在线观看| 在线观看精品自拍视频| 亚洲v日韩v欧美在线观看| 久久亚洲高清国产| 全部免费毛片免费播放| 亚洲精品国产精品乱码不卞| 毛片a级毛片免费观看免下载| 欧美中文字幕在线播放| www.亚洲国产| 国产黄视频网站| 欧美激情综合一区二区| 成人夜夜嗨| 99re精彩视频| 亚洲日韩高清在线亚洲专区| 国产精品大尺度尺度视频| 一区二区三区四区精品视频 | 永久毛片在线播| 亚洲福利视频一区二区| 久久青青草原亚洲av无码| 美女扒开下面流白浆在线试听 | 97人人模人人爽人人喊小说| 国产精品自拍露脸视频| 五月婷婷综合网| 最新国产网站| 精品一区二区无码av| 国产精品第| 40岁成熟女人牲交片免费| 亚洲日韩精品伊甸| 国产精品永久不卡免费视频| 午夜爽爽视频| 毛片网站免费在线观看| 综合久久久久久久综合网| 玩两个丰满老熟女久久网| 黄色免费在线网址| 国产一级在线播放| 精品欧美一区二区三区久久久| 88国产经典欧美一区二区三区| 国产精品无码AV片在线观看播放| 久久国语对白| 日本黄网在线观看| 久久免费成人| 国产精品 欧美激情 在线播放| 天天色综网| 无码AV动漫| 久久精品最新免费国产成人| 一区二区三区国产精品视频| 91啪在线| 国产系列在线| 国产特级毛片| 亚洲成网777777国产精品| 91精品伊人久久大香线蕉| 浮力影院国产第一页|