操作步驟:

成都創(chuàng)新互聯(lián)主營(yíng)東寶網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開(kāi)發(fā),東寶h5小程序開(kāi)發(fā)搭建,東寶網(wǎng)站營(yíng)銷推廣歡迎東寶等地區(qū)企業(yè)咨詢
一、創(chuàng)建一個(gè)ACTIVEX DLL cadPro工程
二、添加一個(gè)模塊命名為ModCad.代碼如下
Public acadApp As Object
Public acadDoc As Object
(這里建立一個(gè)新塊主要是為了以后在多個(gè)窗體、類或者多個(gè)工程中可以調(diào)用)
二、添加一個(gè)類ClsTest代碼如下:
Public Function MenuMain(MenuIndex As Integer)
'下面的判斷在VB中測(cè)試的時(shí)候可以用到,在生成DLL后VBA調(diào)用時(shí)可注釋
If ModCad.acadApp Is Nothing Or ModCad.acadDoc Is Nothing Then
ConnectToAcad
setApp ModCad.acadApp
setDoc ModCad.acadDoc
End If
Select Case MenuIndex
Case 1
AutoCADTest
Case 2
End Select
End Function
Public Function ConnectToAcad()
On Error Resume Next
Set ModCad.acadApp = GetObject(, "AutoCAD.Application.16.2") '16.2是CAD的版本
If Err Then
Err.Clear
Set ModCad.acadApp = CreateObject("AutoCAD.Application.16.2")
End If
If Err Then
Err.Clear
Set ModCad.acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set ModCad.acadApp = CreateObject("AutoCAD.Application")
End If
If Err Then
Unload Me
End If
End If
ModCad.acadApp.Visible = True
Set ModCad.acadDoc = ModCad.acadApp.ActiveDocument
End Function
Public Function setApps(acadObj As AcadApplication)
Set ModCad.acadApp = acadObj
Set ModCad.acadDoc = acadApp.ActiveDocument
End Function
'VB中要在CAD中實(shí)現(xiàn)的功能
Private Function AutoCADTest()
Dim cadLine As AcadLine
Dim cadPoint As Variant
cadPoint = ModCad.acadDoc.Utility.GetPoint(, "請(qǐng)選取一個(gè)插入點(diǎn):")
ModCad.acadDoc.ModelSpace.AddCircle cadPoint, 5
End Function
三、如果要在VB中調(diào)試,在添加一個(gè)EXE工程,引用ACTIVEX工程,添加一個(gè)窗體,在窗體上添加一個(gè)按鈕,
Private Sub Command1_Click()
Dim Rec As New cadPro.MenuMain
Rec.MenuMain 1
End Sub
四、生成DLL文件在VBA中調(diào)用。
在工具----設(shè)定引用項(xiàng)目中加入生成的DLL。代碼如下:
Option Explicit
Private clsGre As New cadPro.ClsTest
Public Sub cadtest()
On Error Resume Next
clsGre.setApp ThisDrawing.Application
clsGre.MenuMain 1
End Sub
按照以上四個(gè)步驟就可實(shí)現(xiàn)VB與AutoCAD的連接。
以上程序在本機(jī)測(cè)試通過(guò)。
OS:winxp sp2 cht
AuotCAD Version:AutoCAD 2006
應(yīng)用程序啟動(dòng)了沒(méi)
dim acadApp As AcadApplication
acadApp = CType(CreateObject("AutoCAD.Application.18"), AcadApplication)
acadApp.Visible = True
啟動(dòng)了CAD才能添加文件,其中18對(duì)應(yīng)的是cad2010,版本不同不一樣。
Dim?ppr?As?PromptPointResult?=?ed.GetPoint("請(qǐng)選擇插入點(diǎn):")
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()
'多文檔要先這樣,否則報(bào)至命錯(cuò)誤?
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
你去查查書(shū)吧,書(shū)上挺詳細(xì)的,在這說(shuō)不好說(shuō),你先在項(xiàng)目里引用。然后 Dim acadapp As AcadApplication Dim acaddoc As AcadDocument On Error Resume Next AcadApp = GetObject(, "AutoCAD.Application") If Err.Number Then Err.Clear() AcadApp = CreateObject("AutoCAD.Application") If Err.Number Then MsgBox("不能運(yùn)行AutoCAD,請(qǐng)檢查是否安裝了AutoCAD") Exit Sub End If End If AcadApp.Visible = True '界面可視
本文標(biāo)題:VB.netcad插件,vb插件開(kāi)發(fā)
當(dāng)前路徑:http://chinadenli.net/article29/dseihch.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、用戶體驗(yàn)、服務(wù)器托管、網(wǎng)站營(yíng)銷、網(wǎng)站排名、網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)