如何在VB内嵌入Autocad的界面?
各位朋友,目前二次开发的例子通常都是需要启动Autocad,在Autocad 内部画图或实现设计功能,使用VB或Delphi开发能否将Autocad界面嵌入到VB窗口内,如果可以的话,请谈一下方法,多谢了!!  ublic Sub AutoCAD_Appliaction(pic As VB.PictureBox, AcadApp As AcadApplication, AcadDoc As AcadDocument) '调用AUTOCAD在VB图形窗口中On Error Resume Next
Dim i As Integer
Set AcadApp = GetObject(, "AutoCAD.Application.16")
If Err Then
Err.Clear
Set AcadApp = CreateObject("AutoCAD.Application.16")
If Err Then
pic.Visible = False
MsgBox Err.Description
pic.Visible = True
Exit Sub
End If
Else
If AcadApp.Documents.Count > 1 Then
For i = AcadApp.Documents.Count To 1 Step -1
Set AcadDoc = AcadApp.Documents.Item(i - 1)
AcadDoc.Save
AcadDoc.Close
Next
End If
End If
Set AcadDoc = Nothing
Dim z As AcadMenuGroup
Dim j As AcadToolbar
For Each z In AcadApp.MenuGroups
For Each j In z.Toolbars
j.Delete
Next j
Next z
lHwnd = GetParent(GetParent(AcadApp.ActiveDocument.hwnd))
If lHwnd = 0 Then Exit Sub
SetParent lHwnd, pic.hwnd
SetWindowText lHwnd, "图形显示"
AcadApp.Visible = True
AcadApp.WindowState = acMax
End Sub
窗体建一图形控件
多谢cangcang朋友给的解答,是否以后在图形中嵌入的CAD界面与使用VBA操作Autocad相同呢?还是有什么差别,或需要注意的地方,因为这方面的资料比较少,还希望能多给点建议,谢谢!
把CAD嵌入VB与在CAD中使用程序区别并不大啊!唯一的好处就是不需要打开CAD, 由于本人刚学VB不久,所以刚才在VB下试了没有成功,提示“用户定义类型未定义”。
还请多多指教!!
还请各位高手指点呀!! 可以实现了,在前面声明WINAPI函数,
Option Explicit
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private lHwnd As Long
在FormLoad中,调用AutoCAD_Appliaction即可,
Call AutoCAD_Appliaction(Picture1, acadapp, acadDoc)
显示出来的界面与Autocad界面及操作完全一样。
但是,Autocad可以在Picture内部拖动,并且能够关闭和最小化,如何限制CAD的这些功能呢?还请各位高手指教,先谢了!
我试着在CAD中画条直线,但每次CAD都会出现一个致命错误,另外还提示在画线时定义的点不对,不知什么原因,请大家帮我分析一下,看看是哪方面的问题,多谢!!
'在CAD内画条直线
Private Sub Command1_Click()
Dim LineObj1 As AcadLine
Dim point1(0 To 2) As AcadPoint, Point2(0 To 2) As AcadPoint
point1(0) = 10#: point1(1) = 1000#: point1(2) = 0#
Point2(0) = 1000#: Point2(1) = 0#: Point2(2) = 0#
' Set LineObj1 = acadapp.ActiveDocument.ModelSpace.AddLine(point1, Point2)
End Sub
'调用AUTOCAD在VB图形窗口中
Public Sub AutoCAD_Appliaction(pic As VB.PictureBox, acadapp As AcadApplication, acadDoc As AcadDocument)
On Error Resume Next
Dim i As Integer
Set acadapp = GetObject(, "AutoCAD.Application.16")
If Err Then
Err.Clear
Set acadapp = CreateObject("AutoCAD.Application.16")
If Err Then
pic.Visible = False
MsgBox Err.Description
pic.Visible = True
Exit Sub
End If
Else
If acadapp.Documents.Count > 1 Then
For i = acadapp.Documents.Count To 1 Step -1
Set acadDoc = acadapp.Documents.Item(i - 1)
acadDoc.Save
acadDoc.Close
Next
End If
End If
Set acadDoc = Nothing
Dim z As AcadMenuGroup
Dim j As AcadToolbar
For Each z In acadapp.MenuGroups
For Each j In z.Toolbars
j.Delete
Next j
Next z
lHwnd = GetParent(GetParent(acadapp.ActiveDocument.hwnd))
If lHwnd = 0 Then Exit Sub
SetParent lHwnd, pic.hwnd
SetWindowText lHwnd, "图形显示"
acadapp.Visible = True
acadapp.WindowState = acMax
End Sub
Private Sub Form_Load()
Call AutoCAD_Appliaction(Picture1, acadapp, acadDoc)
End Sub
Private Sub Form_Unload(Cancel As Integer)
If lHwnd = 0 Then Exit Sub
SetParent lHwnd, 0
End Sub
C:\Documents and Settings\Owner\My Documents\My Pictures\err.bmp
不知怎样发图片,刚才发的错误图片未显示出来,在发一遍。
页:
[1]