vb.netdxf文件的簡(jiǎn)單介紹

vb.net如何在編程中獲取CAD對(duì)象的DXF組碼

感覺 vb.net對(duì)象中根本不存在組碼這個(gè)東西,一切皆對(duì)象。直接遍歷訪問,要對(duì)應(yīng)組碼有何用?如果你想獲取組碼一句簡(jiǎn)單lsp語句就行了。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、網(wǎng)站建設(shè)、甘孜州網(wǎng)絡(luò)推廣、小程序設(shè)計(jì)、甘孜州網(wǎng)絡(luò)營(yíng)銷、甘孜州企業(yè)策劃、甘孜州品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供甘孜州建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:muchs.cn

vb.net能否生成dxf文件?

從你貼的鏈接教程來看,所謂的dxf文件本質(zhì)上就是文本文件,因此擴(kuò)展名可以是任意的,完全沒問題。

VB.net 導(dǎo)入DXF文件

Imports?System.IO

Imports?System.Drawing

Public?Class?PreViewDWG

Private?Structure?BITMAPFILEHEADER

Dim?bfType?As?Short

Dim?bfSize?As?Integer

Dim?bfReserved1?As?Short

Dim?bfReserved2?As?Short

Dim?bfOffBits?As?Integer

End?Structure

Public?Function?GetDwgImage(ByVal?FileName?As?String)?As?Image

If?Not?File.Exists(FileName)?Then?Exit?Function

Dim?DwgF?As?FileStream????'文件流

Dim?PosSentinel?As?Integer??'文件描述塊的位置

Dim?br?As?BinaryReader??'讀取二進(jìn)制文件

Dim?TypePreview?As?Integer?'縮略圖格式

Dim?PosBMP?As?Integer?'縮略圖位置

Dim?LenBMP?As?Integer?'縮略圖大小

Dim?biBitCount?As?Short?'縮略圖比特深度

Dim?biH?As?BITMAPFILEHEADER?'BMP文件頭,DWG文件中不包含位圖文件頭,要自行加上去

Dim?BMPInfo()?As?Byte??'包含在DWG文件中的BMP文件體

Dim?BMPF?As?New?MemoryStream??'保存位圖的內(nèi)存文件流

Dim?bmpr?As?New?BinaryWriter(BMPF)?'寫二進(jìn)制文件類

Dim?myImg?As?Image

Try

DwgF?=?New?FileStream(FileName,?FileMode.Open,?FileAccess.Read)????'文件流

br?=?New?BinaryReader(DwgF)

DwgF.Seek(13,?SeekOrigin.Begin)?'從第十三字節(jié)開始讀取

PosSentinel?=?br.ReadInt32?'第13到17字節(jié)指示縮略圖描述塊的位置

DwgF.Seek(PosSentinel?+?30,?SeekOrigin.Begin)?'將指針移到縮略圖描述塊的第31字節(jié)

TypePreview?=?br.ReadByte?'第31字節(jié)為縮略圖格式信息,2?為BMP格式,3為WMF格式

Select?Case?TypePreview

Case?1

Case?2,?3

PosBMP?=?br.ReadInt32?'DWG文件保存的位圖所在位置

LenBMP?=?br.ReadInt32?'位圖的大小

DwgF.Seek(PosBMP?+?14,?SeekOrigin.Begin)?'移動(dòng)指針到位圖塊

biBitCount?=?br.ReadInt16?'讀取比特深度

DwgF.Seek(PosBMP,?SeekOrigin.Begin)?'從位圖塊開始處讀取全部位圖內(nèi)容備用

BMPInfo?=?br.ReadBytes(LenBMP)??'不包含文件頭的位圖信息

br.Close()

DwgF.Close()

With?biH??'建立位圖文件頭

.bfType?=?H4D42

If?biBitCount??9?Then?.bfSize?=?54?+?4?*?(2?^?biBitCount)?+?LenBMP?Else?.bfSize?=?54?+?LenBMP

.bfReserved1?=?0?'保留字節(jié)

.bfReserved2?=?0?'保留字節(jié)

.bfOffBits?=?14?+?H28?+?1024?'圖像數(shù)據(jù)偏移

End?With

'以下開始寫入位圖文件頭

bmpr.Write(biH.bfType)?'文件類型

bmpr.Write(biH.bfSize)?'文件大小

bmpr.Write(biH.bfReserved1)?'0

bmpr.Write(biH.bfReserved2)?'0

bmpr.Write(biH.bfOffBits)?'圖像數(shù)據(jù)偏移

bmpr.Write(BMPInfo)?'寫入位圖

BMPF.Seek(0,?SeekOrigin.Begin)?'指針移到文件開始處

myImg?=?Image.FromStream(BMPF)?'創(chuàng)建位圖文件對(duì)象

Return?myImg

bmpr.Close()

BMPF.Close()

End?Select

Catch?ex?As?Exception

Return?Nothing

End?Try

End?Function

End?Class

你好 請(qǐng)問下我用VB提取DXF文件中信息然后導(dǎo)出到EXCEL怎么弄啊

Private Sub GetLWPOLYLINECoordinates()

Dim ss_dim As AcadSelectionSet, ent As AcadEntity

Dim dxf_code() As Integer, dxf_value() As Variant

Dim i As Long, j As Long

Dim dbCor As Variant, x As Double, y As Double, z As Double

On Error GoTo ErrExit

Set ss_dim = ThisDrawing.SelectionSets.Add("sPolyLines")

ReDim dxf_code(3), dxf_value(3)

dxf_code(0) = -4: dxf_value(0) = "OR"

dxf_code(1) = 0: dxf_value(1) = "LWPOLYLINE" '這里表示2D多義線

dxf_code(2) = 0: dxf_value(2) = "POLYLINE" '這里表示3D多義線

dxf_code(3) = -4: dxf_value(3) = "OR"

ss_dim.Select acSelectionSetAll, , , dxf_code, dxf_value

Open "d:\\aaaaa.txt" For Append As #1

'"AcDb3dPolyline","AcDbPolyline"

For Each ent In ss_dim

Select Case ent.ObjectName

Case "AcDb3dPolyline"'這里處理3D多義線坐標(biāo)

Dim ent3D As Acad3DPolyline

Set ent3D = ent

For j = 0 To UBound(ent3D.Coordinates) \\ 3

x = ent3D.Coordinates(j * 3)

y = ent3D.Coordinates(j * 3 + 1)

z = ent3D.Coordinates(j * 3 + 2)

Print #1, "X" x ",Y" y ",Z" z

Next

Case "AcDbPolyline"'這里處理2D多義線坐標(biāo)

Dim ent2D As AcadLWPolyline

Set ent2D = ent

For j = 0 To UBound(ent2D.Coordinates) \\ 2

x = ent2D.Coordinates(j * 2)

y = ent2D.Coordinates(j * 2 + 1)

Print #1, "X" x ",Y" y ",Z" ent2D.Elevation

Next

End Select

Next

ErrExit:

ss_dim.Clear

ss_dim.Delete

Close #1

End Sub

如何利用vb讀取一個(gè)dxf格式的圖形文件的數(shù)據(jù)

dxf文件是AutoCad的交換文件,可以直接用AutoCad打開。dxf文件是明碼文件,在vb環(huán)境下按順序文件讀取就可以了。

例如:在C盤根目錄下有一個(gè)文件“1.dxf”

啟動(dòng)vb后,建立一個(gè)按鈕:Command1

并雙擊此按鈕,對(duì)其輸入以下代碼:

Private Sub Command1_Click()

Dim a As String '讀取文件一行的內(nèi)容

Dim i As Long '用于記錄行數(shù)

Dim j As Long '用于記錄用戶如何響應(yīng)提示

Open "c:\1.dxf" For Input As #1

i = 0

While Not EOF(1)

Line Input #1, a

i = i + 1

j = MsgBox("第 " i " 行內(nèi)容為:" a, vbOKCancel + vbInformation)

'運(yùn)行到此步時(shí),如果用戶輸入“確定”則繼續(xù),如果用戶輸入“取消”則結(jié)束本程序

'用戶可以在此輸入處理代碼,對(duì)讀入的字串進(jìn)行處理

If j = vbCancel Then

End

End If

Wend

close #1

End Sub

用VB讀dxf文件時(shí),用什么程序讀取一段圓弧的起點(diǎn)和終點(diǎn)的坐標(biāo)?

dxf中你看entity字段

關(guān)于arc的描述

ARC

以下組碼適用于圓弧圖元。除此處所述的組碼以外,另請(qǐng)參見常用圖元組碼。關(guān)于此表中使用的縮寫和格式方面的信息,請(qǐng)參見本參考的格式慣例。

圓弧組碼

組碼說明

100

子類標(biāo)記

(AcDbCircle)

39

厚度(可選;默認(rèn)值

=

0)

10

中心點(diǎn)(在

OCS

中)DXF:X

值;APP:三維點(diǎn)

20,

30

DXF:中心點(diǎn)的

Y

值和

Z

值(在

OCS

中)

40

半徑

100

子類標(biāo)記

(AcDbArc)

50

起點(diǎn)角度

51

端點(diǎn)角度

210

拉伸方向(可選;默認(rèn)值

=

0,

0,

1)DXF:X

值;APP:三維矢量

220,

230

DXF:拉伸方向的

Y

值和

Z

值(可選)

當(dāng)前題目:vb.netdxf文件的簡(jiǎn)單介紹
當(dāng)前鏈接:http://muchs.cn/article16/hphhgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站內(nèi)鏈網(wǎng)站制作、服務(wù)器托管、App設(shè)計(jì)品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)