Bryco 发表于 2007-3-22 06:00:58

取消定义/重定义外部参照

您好,我想创建一个VBA模块来取消定义外部参照命令,然后创建一个名为'外部参照',然后重新定义它。这可能吗?请帮忙。谢谢

Bryco 发表于 2007-3-22 09:05:07

Keith™ 发表于 2007-3-27 01:25:58

重新定义…实际上没有必要…当用户在命令行中键入xref时,ActiveUCS应立即转到'世界',以及ActiveLayer应转至#039;0'. 然后会弹出“外部参照”对话框。通过“外部参照”对话框插入图形后,图层和ucs应恢复到原来的状态。这能做到吗
谢谢

Bryco 发表于 2007-3-27 08:15:43

是的,您可以使用活动文档的BeginCommand事件来执行此操作

Bryco 发表于 2007-3-27 10:12:00

唐#039;不要忘了XATTACH。

Bryco 发表于 2007-3-28 00:32:13

这是我写的代码。但不幸的是,它'它不工作
请帮忙
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谢谢

Bryco 发表于 2007-3-28 08:15:58

我不知道't认为你'我们将能够在启动另一个命令时有效地使用sendkeys功能。您可能希望以编程方式设置UCS,而不是使用sendkeys函数

Bryco 发表于 2007-3-28 10:24:27

这似乎有效
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

Bryco 发表于 2007-3-28 23:57:56

我复制了WCS,一切都很好。但有一个问题。如果用户单击“外部参照”对话框's Cancel按钮,旧UCS和层不会恢复,因为它没有#039;t执行EndCommand事件。我已经给出了在EndCommand事件中恢复旧UCS和层的代码。有解决方法吗
谢谢

Bryco 发表于 2007-3-29 00:26:52


过去对我有效的方法是在begincommand事件中设置一个配置变量,然后在end command事件中清除它…当然,过滤正确的命令名…现在在begin command事件,如果变量已经设置,那么清除它并重置上次触发begincommand事件时保存的先前设置
流程如下所示:
[开始命令]
<检查配置设置&gt
如果设置为true,则重置绘图变量;验证外部参照调用(&gt)
<设置配置设置&gt
<保存当前设置&gt
<更改图纸变量(&T)
运行xref命令;验证外部参照调用(&gt)
<重置绘图变量(&gt)
<清除配置设置&gt
此场景将重置以前没有'当外部参照被取消时,在运行另一个命令时,不能立即重置。但是,请注意,为了捕捉大多数场景,您还需要使用Begin Lisp事件验证设置。
页: [1] 2
查看完整版本: 取消定义/重定义外部参照