乐筑天下

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

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

[复制链接]

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 | 显示全部楼层
我查找了该事件,但未列出。 这是未记录的功能之一吗?
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-9-12 17:22:07 | 显示全部楼层

您的崩溃可能是由于命令在一个"this绘图"中启动然后在另一个"this绘图"中结束的时间问题造成的,下面是我发现的在第一次打开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 00:57:46 | 显示全部楼层
刚刚尝试了这个,它工作正常。
  1. Private Sub AcadDocument_Activate()
  2.     ThisDrawing.SetVariable "insunits", 1
  3. End Sub

但我更喜欢使用我的ACAD来设置它们。LSP文件(但这只是我)。
回复

使用道具 举报

1

主题

18

帖子

7

银币

初来乍到

Rank: 1

铜币
16
发表于 2007-9-13 08:27:38 | 显示全部楼层

这是使用"ThisDrawing"类所固有的问题之一。"ThisDrawing"通常等同于"Application.ActiveDocument",并且由于OPEN将最后打开的文档设置为ActiveDocument,因此问题将持续存在。
为了在操作中说明这一点,请使用以下代码:
它将在已经打开的绘图中将INSUNS设置为1,而不是新打开的绘图。
最好的解决方案是使用Matt发布的代码,使用Activate事件。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-13 10:31:15 | 显示全部楼层
我没有看到的一件事是阉羊还是不把这段代码放在ThisDrawing模块中?
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-13 21:25:58 | 显示全部楼层
我在thisdrawng模式下试过,但它从来没有运行过,所以我想它不会去那里
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-14 09:59:20 | 显示全部楼层
很高兴你让它工作了!
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-14 10:43:38 | 显示全部楼层
好的,我已经阅读了许多关于这方面的不同文章,但仍然无法解决如何在Autocad上完成它的启动。
一旦Autocad运行并打开另一个绘图等,我就可以让EndOpen工作。
但是
如果最终用户2x单击来自Windows资源管理器的绘图,我无法让EndOpen事件触发,任何想法都将是有帮助的?:kewl:
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-9-14 11:32:56 | 显示全部楼层
现在启动autocad还为时过早,所以你要么等到我打开孔口,要么把我的假代码变成实际工作的东西。我在drawring打开时触发代码的最好运气是使用end lisp。因为acad.lsp在autocad启动时运行,所以就这样了。
  1. 'not even too very close to actual code
  2. Private Sub AcadDocument_EndLisp(LispyFileName as String)
  3. If LispyFileName = "acad.lsp" then
  4.   'crap you want to do here
  5. end if
  6. end sub

回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

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

© 2020-2025 乐筑天下

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