enocheasty 发表于 2010-9-3 09:14:00

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

本帖最后由 作者 于 2010-9-3 20:12:33 编辑 <br /><br /> <p><font face="Verdana">我用drawJig类做了个拖拽,某次拖拽完成后,再缩放模型空间,那个坐标icon,跟着缩放的同时,之前缩放大小的icon保留了下来,结果滚了几下鼠标滚轮,图面好多密密麻麻的坐标icon,在CAD命令行用regenall也没用。还是显示在那里。但又不是每次出现,那是怎么回事呢?</font></p>
<p>忘了截图了,在遇到了,我截个图贴上来!!</p>
<p>上图了!!</p>
<p></p>
<p><font face="Verdana">另外还问个问题,我看了kean的一段代码,他用了Application.SetSystemVariable("DIMBLK",str),为啥我用这句就出错(我是在一个DrawJig类中用的,使用在New构造函数中)提示eInvalidInput,无效输入,哪位大侠知道怎么回事吗?后来我也试着脱离DrawJig类,在外面使用,也这样提示。就不知道为什么会这样了。我的str值和kean用的一样的,都是Dim str as string ="_DOT"</font></p>

雪山飞狐_lzh 发表于 2010-9-3 13:09:00

<p>应该是有对象没有Dispose</p>
<p>&nbsp;</p>

enocheasty 发表于 2010-9-3 20:18:00

谢谢版主,我更新了图片,帮忙看看,那怎么回事!!
另外
那个我有Dispose也不行,程序我10的,不好调试,我加msgbox观察,根本没有运行过SetSystemVariable那一句,就是在那一句出现的InvalidInput的。
这就是我的一个函数,不管是在Jig的New中调用,还是在Btn按钮的Click事件中调用,都提示InvalidInput


   Friend Shared Function GetArrowObjectID(ByVal sets As CSetting) As ObjectId
      Dim BlkName As String = ""
      Dim Dbase As Database = Application.DocumentManager.MdiActiveDocument.Database
      Select Case sets.ArrowName
            Case 1
                BlkName = sets.BlockName
            Case 3
                BlkName = "_ClosedBlank"
            Case 4
                BlkName = "_Dot"
            Case 5
                BlkName = "_DotSmall"
            Case 6
                BlkName = "_DotBlank"
            Case 7
                BlkName = "_Small"
            Case 8
                BlkName = "_BoxBlank"
            Case 9
                BlkName = "_BoxFilled"
            Case 10
                BlkName = "_Open"
            Case 11
                BlkName = "_Open30"
            Case 12
                BlkName = "_Open90"
      End Select
      Dim OldName As String
      If sets.ArrowName <> 1 Then
            OldName = Application.GetSystemVariable("DIMLDRBLK")
            Application.SetSystemVariable("DIMLDRBLK", BlkName)
            If OldName.Length <> 0 Then Application.SetSystemVariable("DIMLDRBLK", OldName)
      End If
      Dim Trans As Transaction = Dbase.TransactionManager.StartTransaction
      Dim BlkTable As BlockTable = Trans.GetObject(Dbase.BlockTableId, OpenMode.ForRead)
      GetArrowObjectID = BlkTable.Item(BlkName)
      Trans.Commit()
      Trans.Dispose()
    End Function

但是我就测试下面这一小段代码,是没有问题的

   <CommandMethod("xxx")> _
    Public Sub test()
      Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
      Dim res As PromptResult = ed.GetString("input arrow:")
      If res.Status = PromptStatus.OK Then
            Application.SetSystemVariable("DIMLDRBLK", res.StringResult)
      End If
    End Sub
页: [1]
查看完整版本: [求助]关于JIG中引发的问题,屏幕坐标图标