乐筑天下

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

设置变量的最佳方法是什么

[复制链接]

4

主题

54

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2007-9-12 16:56:52 | 显示全部楼层 |阅读模式
好的,我认为这是个好主意,但它锁定了我的机器,然后致命并关闭 那么,确保始终设置此变量的最佳方法是什么
  1. Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
  2. If UCase(CommandName) = "OPEN" Then
  3. ThisDrawing.SetVariable "INSUNITS", 1
  4. End If
  5. End Sub


回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-12 17:14:27 | 显示全部楼层
您是否在EndOpen事件而不是EndCommand事件中尝试了它 
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-9-12 17:22:07 | 显示全部楼层
我寻找那个事件,它不是#039;t列出 这是未记录的功能之一吗?
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-13 00:57:46 | 显示全部楼层
It#039;因为它是应用程序级事件,所以只有在您设置应用程序后,它才可用
您的崩溃可能是由一次启动命令的时间问题引起的;本图纸;然后以另一个“结束”;本图纸;,下面是我最好的方式'我发现,在首次打开cad后,应用程序级事件可以正常工作
  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
  10. Private Sub AutoCAD_EndOpen(ByVal FileName As String)
  11.     ThisDrawing.SetVariable "INSUNITS", 1
  12.     MsgBox "ins"
  13. End Sub
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-13 08:27:38 | 显示全部楼层
刚试过这个,效果很好
  1. Private Sub AcadDocument_Activate()
  2.     ThisDrawing.SetVariable "insunits", 1
  3. End Sub
但我更喜欢使用ACAD设置它们。LSP文件(但那&35;039;只属于我)
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-13 10:31:15 | 显示全部楼层

这是使用;本图纸;类&引用;本图纸;通常相当于;应用ActiveDocument;,由于打开,将最后打开的文档设置为ActiveDocument,问题将持续存在
要实际说明这一点,请使用以下代码:
  1. Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
  2. If UCase(CommandName) = "OPEN" Then
  3. Dim NewDoc As AcadDocument
  4. Set NewDoc = Application.ActiveDocument
  5. NewDoc.SetVariable "INSUNITS", 1
  6. End If
  7. End Sub
在已经打开的图形中,而不是在新打开的图形中将INSUNITS设置为1
最好的解决方案是使用Matt发布的代码,使用Activate事件。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-13 21:25:58 | 显示全部楼层
请小心使用AcadDocument\u Activate()方法
如果您只希望每个dwg执行一次。这有点可疑,因为对于2个图形,打开ctrl+tab将同时激活第二个dwg并再次运行子图形
不过,对于这个应用程序来说,它看起来确实不错。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-14 09:59:20 | 显示全部楼层
我唯一没有做的事'我不知道是否要将此代码放入ThisDrawing模块?
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-14 10:43:38 | 显示全部楼层
我在thisdrawng mod中试用过,但它从未运行过,所以我想它不会'不要去那里
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-14 11:32:56 | 显示全部楼层
好的,我想我需要关闭Autocad 突然间,我打开的所有东西都引发了这场活动 谢谢大家
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-6 07:42 , Processed in 0.965457 second(s), 72 queries .

© 2020-2025 乐筑天下

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