乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 39|回复: 2

文档事件和计时

[复制链接]

3

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
20
发表于 2007-8-14 18:37:14 | 显示全部楼层 |阅读模式
大家好——很大程度上感谢Keith的帮助,我让我的VB应用程序使用VBA存根工作,该存根设置我的类的实例并终止。我正在编程的事件在应该的时候触发,我很高兴。
一个“粘性检票口”是我需要有条件地重置系统变量,具体取决于我正在捕获的命令。除了第一次之外,它每次都有效。我尝试在我的VB程序、VBA存根以及两个地方设置系统变量。两者都给出了相同的结果——除了第一次,每次都有效。
我创建了一个ACVBA.ARX的ACAD.RX,并将与存根DVB程序中相同的代码放入ACAD.DVB,以防程序加载的顺序会影响这一点,但没有乐趣。换句话说,我是在ACAD.DVB自动加载程序还是稍后手动加载程序似乎并不重要,ACVBA.ARX的存在与否(使用vanilla ACAD 2007)似乎也不重要。
我试图做的是使用ATTREQ来抑制DDATTE/ATTEDIT对话框。当我在VBA存根中执行代码时,重置系统变量的请求发生在DDATTE对话框弹出之前,但它仍然弹出。
另一个有趣的事实是,当整个事情在VBA中完成时,这从未发生过。
在我的DVB存根中设置变量时,它发生在VB程序加载之前很久(无论如何,用计算机术语来说),所以我不明白为什么重置ATTREQ不会影响DDATTE/ATTEDIT的显示——第一次。正如我所说,其余时间它按预期工作。
我错过了什么?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-8-15 00:09:17 | 显示全部楼层
在vba中,计时足够复杂
对我来说,下面的工作很有效,而“VBAIDE”则不行
(我只在vba中讨论)
  1. Public WithEvents AutoCAD As AcadApplication
  2. Sub App_StartMacro()
  3.     Set AutoCAD = ThisDrawing.Application
  4. End Sub
  5. Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
  6.     If CommandName = "COMMANDLINE" Then
  7.         Set AutoCAD = ThisDrawing.Application
  8.     End If
  9. End Sub

回复

使用道具 举报

3

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
20
发表于 2007-8-15 18:01:07 | 显示全部楼层
我曾希望也许Start inCommand会为我争取到足够的额外时间来阻止讨厌的DDATTE/ATTEDIT对话框,但没有。我正在尝试在加载VB例程之前在VBA中处理这个问题。
现在,我只是将ATTREQ设置为0,看看这是否足够好。它在我的应用程序中有效,但我想确保其他块插入(带有属性)正常工作。如果插入的对象具有属性,我的应用程序会强制ATTEDIT出现,所以它可能是。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-6 10:47 , Processed in 1.115765 second(s), 59 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表