Kheilmann 发表于 2006-6-15 12:17:16

打开时检查图形

我正在测试我打开的每张图纸(实际上没有“打开”事件,只有一个(激活)。因此...每次打开或切换到dwg时,我的代码都会运行。
代码只搜索一个块,或者用最新版本替换它,或者只更新年份。
除了当我打开几个dwg并且每个DWG中有几个布局时,它工作得很好。
我试图对几个标志进行编程,但不知道如何让它们工作...
1。打开一个dwg后,为该dwg指定一个临时标志,这样它就不会在每次切换到该dwg时运行代码。它所做的就是首先检查这个标志,如果为真,退出sub,如果为假,继续。
2。将我的代码放入仅在第一次打开dwg时运行的事件中......
任何想法或想法,
谢谢是进步...
**** Hidden Message *****

Bryco 发表于 2006-6-15 12:23:49

关闭时更新dwg如何?我问的原因是有一场势均力敌的比赛。然后,当dwg关闭时,它将只运行一次

Kheilmann 发表于 2006-6-15 12:25:51

这是DrawingOpen Event
Private Sub AcadDocument_BeginLisp(ByVal FirstLine As String)
If FirstLine = "s::startup" Then
'The drawing was just opened
End If
End Sub
的Wahr方法

Kheilmann 发表于 2006-6-15 12:43:13

每次lisp运行时,它都会检查lisp的第一行,看它是否是s::startup。我已经运行了这个作为我的“我上周到底在做什么”dvb的一部分,在有人问之前,我没有注意到由于它的运行而导致的任何减速。

Kheilmann 发表于 2006-6-15 12:45:53

非常酷!!

Bryco 发表于 2006-6-15 12:47:32

Kheilmann,有文档级别和应用程序级别的事件可用。
开始打开和结束打开事件是后者的一部分。
将以下内容粘贴到您的这个绘图模块中
Private WithEvents AutoCAD As AcadApplication
Public Sub Acadstartup()
Set AutoCAD = Application
AutoCAD.WindowState = acMax
ThisDrawing.WindowState = acMax
End Sub
现在单击对象框中的AutocCAD,您将在过程/事件框中看到所有可用的事件(在其右侧)。
除了Bob的酷方法之外,我认为您还可以访问dwg属性

Kheilmann 发表于 2006-6-15 23:48:20

感谢大家的参与。
Bryco,我马上就试试你的方法。
Bob,您的方法非常有效,只是在第一次绘图后,我的lsp文件似乎不再加载。
SDI = 0
Acaddocaslsp = 1
我注释掉了Begin_Lisp过程,现在我的命令似乎可以正常加载。
有人知道任何冲突吗?
我尝试将我的Acad.lsp文件中的所有内容移动到acaddoc.lsp,但在第一个dwg之后仍然没有加载任何内容。

Kheilmann 发表于 2006-6-19 08:54:23

布里科,你的方法很有效。尽管我不得不使用EndOpen事件而不是BeginOpen事件。
页: [1]
查看完整版本: 打开时检查图形