武文弄墨 发表于 2003-7-18 17:45:00

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程序里面,请教各位高手

mccad 发表于 2003-7-18 19:25:00

尝试能不能通过API来隐藏ACAD窗口的关闭按钮X

武文弄墨 发表于 2003-7-18 21:12:00

2次开发栏目里面,倒是有处理窗口x失去效应的方法。
但是,如何更关闭autocad的时候,返回到vb所编写的程序代码呢?

请教斑竹!

mccad 发表于 2003-7-18 21:20:00

可以试试用事件来完成

zara 发表于 2003-7-19 08:40:00

对, 可以使用 Application 和 Document 的 BeginQuit 和 BeginClose 事件, 在 ACAD 附带的帮助里就有详细的说明.

武文弄墨 发表于 2003-7-19 17:44:00

大家可能没有理解我的意思,呵呵!
我用vb编写了两个窗体,记为a和b
现在,在a窗体里面,我设置commond1_click,启动了autocad2000,进行一系列的画图等操作。
在autocad2000下的工作全部完成以后,关掉autocad,之后要求可以自动返回到b窗体

请问这个事件改如何处理?
5楼的兄弟,所讲我也看过了,在 Enabling Application Level Events在这章节,不明白,还望赐教

zara 发表于 2003-7-20 10:50:00

刚才仔细看了一下ACADApplication.BeginQuit的触发时机, 觉得这个事件并不十分实用, 它甚至在提示用户对没有保存的图形是否进行保存之前就发出了, 这就不太符合使用要求. 是否可以考虑在窗体a中设置一个Timer, 时间设为几秒种, 每次Timer事件就去检测一次看看那个ACAD是否还在? Timer的方法虽然对机子的性能有极微的影响, 但应比BeginQuit在用户界面上更合理, 在程序设计上更简单.

南子 发表于 2003-7-21 14:08:00

‘您看这样行不行
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

武文弄墨 发表于 2003-8-14 22:46:00

自己的问题,自己答,对于使用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]
查看完整版本: vb启动Autocad,如何由Autocad关闭,返回vb窗口?