vb启动Autocad,如何由Autocad关闭,返回vb窗口?
最近,尝试用vb来操纵Autocad,感觉和cad下面的vba是大同小异。核心部分,就是设置vb与cad的连接。这点,我就不罗嗦了。作为交互手段,在vb编写的程序里面,我们可以通过Command_Click时间,启动Autocad;可以通过AppActivate AcadApp.Caption实现切换的Autocad窗口
但是,我在Autocad里面作图完毕,正常退出后,又如何自动切换到我的vb程序里面呢?还包括一些机制的处理?譬如,在cad里面进行了2次开发,里面譬如与数据库操作,在sql或者access里面存入了信息。但是在关闭cad图纸的时候,不保存,强行退出,必将出错。(这个应该用saved来验证吧)
如何由autocad关闭,自动转回vb程序里面,请教各位高手 尝试能不能通过API来隐藏ACAD窗口的关闭按钮X 2次开发栏目里面,倒是有处理窗口x失去效应的方法。
但是,如何更关闭autocad的时候,返回到vb所编写的程序代码呢?
请教斑竹! 可以试试用事件来完成 对, 可以使用 Application 和 Document 的 BeginQuit 和 BeginClose 事件, 在 ACAD 附带的帮助里就有详细的说明. 大家可能没有理解我的意思,呵呵!
我用vb编写了两个窗体,记为a和b
现在,在a窗体里面,我设置commond1_click,启动了autocad2000,进行一系列的画图等操作。
在autocad2000下的工作全部完成以后,关掉autocad,之后要求可以自动返回到b窗体
请问这个事件改如何处理?
5楼的兄弟,所讲我也看过了,在 Enabling Application Level Events在这章节,不明白,还望赐教 刚才仔细看了一下ACADApplication.BeginQuit的触发时机, 觉得这个事件并不十分实用, 它甚至在提示用户对没有保存的图形是否进行保存之前就发出了, 这就不太符合使用要求. 是否可以考虑在窗体a中设置一个Timer, 时间设为几秒种, 每次Timer事件就去检测一次看看那个ACAD是否还在? Timer的方法虽然对机子的性能有极微的影响, 但应比BeginQuit在用户界面上更合理, 在程序设计上更简单. ‘您看这样行不行
Private Sub AcadDocument_BeginClose()
If ThisDrawing.Saved Then
If ThisDrawing.ModelSpace.Count > 0 Then
MsgBox "saved"
'Do Something
Else
MsgBox "nothing in thisdrawing"
'Do Something
End If
Else
MsgBox "save nothing"
'Do Something
End If
End Sub 自己的问题,自己答,对于使用vb来操纵cad有些意义
下面给出简短程序
请首先引用autocad
Public WithEvents ACADApp As AcadApplication
Private Sub Form_Load()
On Error Resume Next
Set ACADApp = GetObject(, "autocad.application")
If Err Then
Err.Clear
Set ACADApp = CreateObject("autocad.application")
If Err Then
MsgBox ("系统无法运行AutoCAD,请检查是否正确安装了AutoCAD")
Exit Sub
End If
End If
End Sub
Private Sub Command1_Click()‘显示cad窗口
ACADApp.Visible = True
ACADApp.WindowState = acMax
End Sub
Private Sub ACADApp_BeginQuit(Cancel As Boolean)’询问cad的关闭时间
If MsgBox("AutoCAD即将关闭。要继续关闭", vbYesNo + vbQuestion) <> vbNo Then
Cancel = False
End If
End Sub
其他事件类同,大家可以找来对应的函数处理,谢谢8楼的兄弟
8楼的答案是在vba里面操作,和vb下稍有不同
页:
[1]