明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3804|回复: 8

vb启动Autocad,如何由Autocad关闭,返回vb窗口?

[复制链接]
发表于 2003-7-18 17:45:00 | 显示全部楼层 |阅读模式
最近,尝试用vb来操纵AutoCAD,感觉和cad下面的vba是大同小异。核心部分,就是设置vb与cad的连接。这点,我就不罗嗦了。

作为交互手段,在vb编写的程序里面,我们可以通过Command_Click时间,启动Autocad;可以通过AppActivate AcadApp.Caption实现切换的Autocad窗口

但是,我在Autocad里面作图完毕,正常退出后,又如何自动切换到我的vb程序里面呢?还包括一些机制的处理?譬如,在cad里面进行了2次开发,里面譬如与数据库操作,在sql或者access里面存入了信息。但是在关闭cad图纸的时候,不保存,强行退出,必将出错。(这个应该用saved来验证吧)

如何由autocad关闭,自动转回vb程序里面,请教各位高手
发表于 2003-7-18 19:25:00 | 显示全部楼层
尝试能不能通过API来隐藏ACAD窗口的关闭按钮X
 楼主| 发表于 2003-7-18 21:12:00 | 显示全部楼层
2次开发栏目里面,倒是有处理窗口x失去效应的方法。
但是,如何更关闭autocad的时候,返回到vb所编写的程序代码呢?

请教斑竹!
发表于 2003-7-18 21:20:00 | 显示全部楼层
可以试试用事件来完成
发表于 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在这章节,不明白,还望赐教
发表于 2003-7-20 10:50:00 | 显示全部楼层
刚才仔细看了一下ACADApplication.BeginQuit的触发时机, 觉得这个事件并不十分实用, 它甚至在提示用户对没有保存的图形是否进行保存之前就发出了, 这就不太符合使用要求. 是否可以考虑在窗体a中设置一个Timer, 时间设为几秒种, 每次Timer事件就去检测一次看看那个ACAD是否还在? Timer的方法虽然对机子的性能有极微的影响, 但应比BeginQuit在用户界面上更合理, 在程序设计上更简单.
发表于 2003-7-21 14:08:00 | 显示全部楼层
‘您看这样行不行
  1. Private Sub AcadDocument_BeginClose()
  2.     If ThisDrawing.Saved Then
  3.        If ThisDrawing.ModelSpace.Count > 0 Then
  4.           MsgBox "saved"
  5.           'Do Something
  6.           Else
  7.           MsgBox "nothing in thisdrawing"
  8.           'Do Something
  9.        End If
  10.        Else
  11.        MsgBox "save nothing"
  12.        'Do Something
  13.     End If
  14. 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下稍有不同
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 14:33 , Processed in 0.267937 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表