vb2010(vb.net)貌似已經沒有OLE控件
創新互聯公司是一家專注于做網站、成都做網站與策劃設計,中原網站建設哪家好?創新互聯公司做網站,專注于網站建設十年,網設計領域的專業建站公司;建站業務涵蓋:中原等地區。中原做網站價格咨詢:028-86922220
下面的代碼是用PictureBox控件顯示CAD的DWG文件
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??'讀取二進制文件
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??'保存位圖的內存文件流
Dim?bmpr?As?New?BinaryWriter(BMPF)?'寫二進制文件類
Dim?myImg?As?Image
Try
DwgF?=?New?FileStream(FileName,?FileMode.Open,?FileAccess.Read)????'文件流
br?=?New?BinaryReader(DwgF)
DwgF.Seek(13,?SeekOrigin.Begin)?'從第十三字節開始讀取
PosSentinel?=?br.ReadInt32?'第13到17字節指示縮略圖描述塊的位置
DwgF.Seek(PosSentinel?+?30,?SeekOrigin.Begin)?'將指針移到縮略圖描述塊的第31字節
TypePreview?=?br.ReadByte?'第31字節為縮略圖格式信息,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)?'移動指針到位圖塊
biBitCount?=?br.ReadInt16?'讀取比特深度
DwgF.Seek(PosBMP,?SeekOrigin.Begin)?'從位圖塊開始處讀取全部位圖內容備用
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?'保留字節
.bfReserved2?=?0?'保留字節
.bfOffBits?=?14?+?H28?+?1024?'圖像數據偏移
End?With
'以下開始寫入位圖文件頭
bmpr.Write(biH.bfType)?'文件類型
bmpr.Write(biH.bfSize)?'文件大小
bmpr.Write(biH.bfReserved1)?'0
bmpr.Write(biH.bfReserved2)?'0
bmpr.Write(biH.bfOffBits)?'圖像數據偏移
bmpr.Write(BMPInfo)?'寫入位圖
BMPF.Seek(0,?SeekOrigin.Begin)?'指針移到文件開始處
myImg?=?Image.FromStream(BMPF)?'創建位圖文件對象
Return?myImg
bmpr.Close()
BMPF.Close()
End?Select
Catch?ex?As?Exception
Return?Nothing
End?Try
End?Function
' 首先在工程里引用 AutoCAD 類型庫,例如 CAD2004的 “AutoCAD 2004 Type Library”
' 下面的代碼在CAD里畫一個圓,圓心在(100,100,0)處,半徑為 50
Dim Acadapp As AcadApplication
On Error Resume Next
Set Acadapp = GetObject(, "AutoCAD.Application") ' 連接 CAD
If Err Then
Err.Clear
Set Acadapp = CreateObject("AutoCAD.Application") ' 如果CAD沒有打開,則打開一個新的CAD
If Err Then
MsgBox Err.Description ' 如果打開CAD失敗顯示錯誤信息
Exit Sub
End If
End If
Dim circleObj As AcadCircle
Dim point1(0 To 2) As Double, dR As Double
point1(0) = 100#: point1(1) = 100#: point1(2) = 0# ' 定義圓心坐標
dR = 50# ' 定義圓半徑
Set circleObj = Acadapp.ActiveDocument.ModelSpace.AddCircle(point1, dR) '按定義圓心和半徑畫出一個圓
想要更詳細的學習,建議看CAD幫助里的 VBA 部分。
CAD里的結點是什么信息了,要輸出世界坐標還是用戶坐標,最好把CAD文件發上來,不清楚怎么有人能幫你??
Dim?ppr?As?PromptPointResult?=?ed.GetPoint("請選擇插入點:")
Dim?pt?As?Point3d?=?ppr.Value
utility.WriteToEditor(pt.ToString())
Dim?pidBlock?As?New?PIDBlock()
'自己定義的圖塊類,保存圖塊的路徑和名稱?
pidBlock.Name?=?"sample"
pidBlock.Path?=?blockPath??"b_sample.dwg"
Using?blkDb?As?New?Database(False,?True)
'read?drawing?
blkDb.ReadDwgFile(pidBlock.Path,?System.IO.FileShare.Read,?True,?Nothing)
blkDb.CloseInput(True)
Using?docLock?As?DocumentLock?=?doc.LockDocument()
'多文檔要先這樣,否則報至命錯誤?
Using?t?As?Transaction?=?doc.TransactionManager.StartTransaction()
'insert?it?as?a?new?block?
Dim?idBTR?As?ObjectId?=?doc.Database.Insert(pidBlock.Name,?blkDb,?False)
'create?a?ref?to?the?block?
Dim?bt?As?BlockTable?=?DirectCast(t.GetObject(doc.Database.BlockTableId,?OpenMode.ForRead),?BlockTable)
Dim?btr?As?BlockTableRecord?=?DirectCast(t.GetObject(bt(BlockTableRecord.ModelSpace),?OpenMode.ForWrite),?BlockTableRecord)
Using?bref?As?New?BlockReference(pt,?idBTR)
btr.AppendEntity(bref)
t.AddNewlyCreatedDBObject(bref,?True)
End?Using
t.Commit()
End?Using
End?Using
End?Using
網站名稱:vb.net打開cad圖 打開vb說要安裝CAD
網站地址:http://m.kartarina.com/article38/hgjppp.html
成都網站建設公司_創新互聯,為您提供云服務器、動態網站、外貿建站、商城網站、自適應網站、全網營銷推廣
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯