取消定义/重定义外部参照
您好,我想创建一个VBA模块来取消定义外部参照命令,然后创建一个名为';外部参照';,然后重新定义它。这可能吗?请帮忙。谢谢不 重新定义…实际上没有必要…当用户在命令行中键入xref时,ActiveUCS应立即转到';世界';,以及ActiveLayer应转至#039;0'. 然后会弹出“外部参照”对话框。通过“外部参照”对话框插入图形后,图层和ucs应恢复到原来的状态。这能做到吗
谢谢 是的,您可以使用活动文档的BeginCommand事件来执行此操作
唐#039;不要忘了XATTACH。 这是我写的代码。但不幸的是,它';它不工作
请帮忙
Option Explicit
Dim CurUCS As AcadUCS
Dim CurLayer As AcadLayer
Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
If CommandName = "XREF" Or CommandName = "XATTACH" Then
Set CurUCS = ThisDrawing.ActiveUCS
Set CurLayer = ThisDrawing.ActiveLayer
SendKeys "{Esc}"
ThisDrawing.SendCommand "ucs" & vbCr & "world" & vbCr
ThisDrawing.Layers("0").Freeze = False
ThisDrawing.Layers("0").LayerOn = True
ThisDrawing.ActiveLayer = ThisDrawing.Layers("0")
End If
End Sub
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
If CommandName = "XREF" Or CommandName = "XATTACH" Then
ThisDrawing.ActiveUCS = CurUCS
ThisDrawing.ActiveLayer = CurLayer
End If
End Sub谢谢 我不知道';t认为你';我们将能够在启动另一个命令时有效地使用sendkeys功能。您可能希望以编程方式设置UCS,而不是使用sendkeys函数
这似乎有效
Sub owcs()
Dim zero(2) As Double
Dim Xaxis(2) As Double
Dim Yaxis(2) As Double
Dim strNm As String, sUcs As String
Dim oUcs As AcadUCS
If ThisDrawing.GetVariable("WORLDUCS") = 1 Then
Exit Sub
Else
sUcs = ThisDrawing.GetVariable("UCSNAME")
'Debug.Print sUcs
Xaxis(0) = 1: Yaxis(1) = 1
Set oUcs = ThisDrawing.UserCoordinateSystems.Add(zero, Xaxis, Yaxis, "World")
ThisDrawing.ActiveUCS = oUcs
End If
End Sub 我复制了WCS,一切都很好。但有一个问题。如果用户单击“外部参照”对话框';s Cancel按钮,旧UCS和层不会恢复,因为它没有#039;t执行EndCommand事件。我已经给出了在EndCommand事件中恢复旧UCS和层的代码。有解决方法吗
谢谢
过去对我有效的方法是在begincommand事件中设置一个配置变量,然后在end command事件中清除它…当然,过滤正确的命令名…现在在begin command事件,如果变量已经设置,那么清除它并重置上次触发begincommand事件时保存的先前设置
流程如下所示:
[开始命令]
<;检查配置设置>
如果设置为true,则重置绘图变量;验证外部参照调用(>)
<;设置配置设置>
<;保存当前设置>
<;更改图纸变量(&T)
运行xref命令;验证外部参照调用(>)
<;重置绘图变量(>)
<;清除配置设置>
此场景将重置以前没有';当外部参照被取消时,在运行另一个命令时,不能立即重置。但是,请注意,为了捕捉大多数场景,您还需要使用Begin Lisp事件验证设置。
页:
[1]
2