明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2126|回复: 2

[求助]关于JIG中引发的问题,屏幕坐标图标

[复制链接]
发表于 2010-9-3 09:14:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-9-3 20:12:33 编辑

我用drawJig类做了个拖拽,某次拖拽完成后,再缩放模型空间,那个坐标icon,跟着缩放的同时,之前缩放大小的icon保留了下来,结果滚了几下鼠标滚轮,图面好多密密麻麻的坐标icon,在CAD命令行用regenall也没用。还是显示在那里。但又不是每次出现,那是怎么回事呢?

忘了截图了,在遇到了,我截个图贴上来!!

上图了!!

另外还问个问题,我看了kean的一段代码,他用了Application.SetSystemVariable("DIMBLK",str),为啥我用这句就出错(我是在一个DrawJig类中用的,使用在New构造函数中)提示eInvalidInput,无效输入,哪位大侠知道怎么回事吗?后来我也试着脱离DrawJig类,在外面使用,也这样提示。就不知道为什么会这样了。我的str值和kean用的一样的,都是Dim str as string ="_DOT"

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2010-9-3 13:09:00 | 显示全部楼层

应该是有对象没有Dispose

 

 楼主| 发表于 2010-9-3 20:18:00 | 显示全部楼层
谢谢版主,我更新了图片,帮忙看看,那怎么回事!!
另外
那个我有Dispose也不行,程序我10的,不好调试,我加msgbox观察,根本没有运行过SetSystemVariable那一句,就是在那一句出现的InvalidInput的。
这就是我的一个函数,不管是在Jig的New中调用,还是在Btn按钮的Click事件中调用,都提示InvalidInput
  1.      Friend Shared Function GetArrowObjectID(ByVal sets As CSetting) As ObjectId
  2.         Dim BlkName As String = ""
  3.         Dim Dbase As Database = Application.DocumentManager.MdiActiveDocument.Database
  4.         Select Case sets.ArrowName
  5.             Case 1
  6.                 BlkName = sets.BlockName
  7.             Case 3
  8.                 BlkName = "_ClosedBlank"
  9.             Case 4
  10.                 BlkName = "_Dot"
  11.             Case 5
  12.                 BlkName = "_DotSmall"
  13.             Case 6
  14.                 BlkName = "_DotBlank"
  15.             Case 7
  16.                 BlkName = "_Small"
  17.             Case 8
  18.                 BlkName = "_BoxBlank"
  19.             Case 9
  20.                 BlkName = "_BoxFilled"
  21.             Case 10
  22.                 BlkName = "_Open"
  23.             Case 11
  24.                 BlkName = "_Open30"
  25.             Case 12
  26.                 BlkName = "_Open90"
  27.         End Select
  28.         Dim OldName As String
  29.         If sets.ArrowName <> 1 Then
  30.             OldName = Application.GetSystemVariable("DIMLDRBLK")
  31.             Application.SetSystemVariable("DIMLDRBLK", BlkName)
  32.             If OldName.Length <> 0 Then Application.SetSystemVariable("DIMLDRBLK", OldName)
  33.         End If
  34.         Dim Trans As Transaction = Dbase.TransactionManager.StartTransaction
  35.         Dim BlkTable As BlockTable = Trans.GetObject(Dbase.BlockTableId, OpenMode.ForRead)
  36.         GetArrowObjectID = BlkTable.Item(BlkName)
  37.         Trans.Commit()
  38.         Trans.Dispose()
  39.     End Function

但是我就测试下面这一小段代码,是没有问题的
  1.      <CommandMethod("xxx")> _
  2.     Public Sub test()
  3.         Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
  4.         Dim res As PromptResult = ed.GetString("input arrow:")
  5.         If res.Status = PromptStatus.OK Then
  6.             Application.SetSystemVariable("DIMLDRBLK", res.StringResult)
  7.         End If
  8.     End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 00:29 , Processed in 0.174253 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表