乐筑天下

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

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

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-4-1 00:35:03 | 显示全部楼层
基思,
I'对不起,我没有'我不理解你解释的解决方法。我将给出我所做的代码。希望你能修改代码,这让我更好地理解
  1. Option Explicit
  2. Dim CurUCS As AcadUCS
  3. Dim CurLayer As AcadLayer
  4. Dim UCSs As Object
  5. Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
  6. If CommandName = "XREF" Or CommandName = "XATTACH" Then
  7.     Set CurUCS = ThisDrawing.ActiveUCS
  8.     Set CurLayer = ThisDrawing.ActiveLayer
  9.     Call ShowWCS
  10.     ThisDrawing.Layers("0").Freeze = False
  11.     ThisDrawing.Layers("0").LayerOn = True
  12.     ThisDrawing.ActiveLayer = ThisDrawing.Layers("0")
  13. End If
  14. End Sub
  15. Sub ShowWCS()
  16. '
  17. '   Display WCS
  18. '
  19.     Dim wcs As Object
  20.     Dim dorigin(0 To 2) As Double
  21.     Dim dxAxisPnt(0 To 2) As Double
  22.     Dim dyAxisPnt(0 To 2) As Double
  23.         
  24.     dorigin(0) = 0#
  25.     dorigin(1) = 0#
  26.     dorigin(2) = 0#
  27.    
  28.     dxAxisPnt(0) = 1#
  29.     dxAxisPnt(1) = 0#
  30.     dxAxisPnt(2) = 0#
  31.    
  32.     dyAxisPnt(0) = 0#
  33.     dyAxisPnt(1) = 1#
  34.     dyAxisPnt(2) = 0#
  35.    
  36.     Set wcs = ThisDrawing.UserCoordinateSystems.Add(dorigin, dxAxisPnt, dyAxisPnt, "WORLD")
  37. '    Display WCS.
  38.     ThisDrawing.ActiveUCS = wcs
  39.    
  40. End Sub
  41. Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
  42. If CommandName = "XREF" Or CommandName = "XATTACH" Then
  43.     ThisDrawing.ActiveUCS = CurUCS
  44.     ThisDrawing.ActiveLayer = CurLayer
  45.     ThisDrawing.UserCoordinateSystems.Item("World").Delete
  46. End If
  47. End Sub
如果我没有错,我知道如果取消外部参照对话框,执行控件永远不会进入EndCommand事件。请帮忙
谢谢
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-4-1 01:38:47 | 显示全部楼层
dim bActive;作为布尔值,在startcommand中设置为true,在endcommand中设置为false,如果在启动startcomman时为true,则endcommand从未激活(发生转义)。现在重置图层
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-4-2 01:51:08 | 显示全部楼层
Bryco,
我按照你在上一篇帖子中说的做了,但没有't工作。在第三步中,您写道,如果StartCommand中为true,则EndCommand从未激活。所以我的问题是,如果EndCommand从未激活,那么布尔值为true,这是在startcommand中设置的。因此所需的代码段将不会运行
谢谢
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-4-2 22:48:47 | 显示全部楼层
使用Line命令时观察图层管理器,escape yadayada
  1. Option Explicit
  2. Private Curlayer As AcadLayer
  3. Private bActive As Boolean
  4. Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
  5.     If bActive Then
  6.         ThisDrawing.ActiveLayer = Curlayer
  7.     End If
  8.    
  9.     If CommandName = "LINE" Then
  10.         Set Curlayer = ThisDrawing.ActiveLayer
  11.         ThisDrawing.ActiveLayer = ThisDrawing.Layers("0")
  12.         bActive = True
  13.     End If
  14. End Sub
  15. Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
  16.     If CommandName = "LINE" Then
  17.         bActive = False
  18.         ThisDrawing.ActiveLayer = Curlayer
  19.     End If
  20. End Sub
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-4-12 01:18:29 | 显示全部楼层
不没有#039;t工作。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-7 14:33 , Processed in 0.605721 second(s), 61 queries .

© 2020-2025 乐筑天下

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