明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: xwjljh

[命令] 双击CAD对象,显示自定义对话框实现方法(VB.NET)

  [复制链接]
发表于 2009-11-6 15:23:00 | 显示全部楼层

果然在CAD2006中不太好实现的双击,在CAD2008中特容易实现,唉,看来要跟上时代的脚步,用2008开发了

发表于 2011-7-1 01:20:52 | 显示全部楼层
雪山飞狐_lzh 发表于 2009-5-30 13:53
C#代码和VB.Net的代码相差不大的,网上有代码转换器可以试下,不过大体应该看的懂
完整的代码:
  1. Class TlsApplication
  2.         Implements IExtensionApplication
  3.         Private Sub IExtensionApplication_Initialize() Implements IExtensionApplication.Initialize
  4.                 TTest.Start()
  5.         End Sub
  6.         Private Sub IExtensionApplication_Terminate() Implements IExtensionApplication.Terminate
  7.         End Sub
  8. End Class
  9. Class TTest
  10.         Shared m_Veto As Boolean = False
  11.         Public Shared Sub Start()
  12.                 Application.DocumentManager.DocumentLockModeChanged += New DocumentLockModeChangedEventHandler(AddressOf vetoCommand)
  13.                 Application.BeginDoubleClick += New BeginDoubleClickEventHandler(AddressOf beginDoubleClick)
  14.         End Sub
  15.         Private Shared Sub beginDoubleClick(sender As Object, e As BeginDoubleClickEventArgs)
  16.                 Dim doc As Document = Application.DocumentManager.MdiActiveDocument
  17.                 Dim ed As Editor = doc.Editor
  18.                 Dim res As PromptSelectionResult = ed.SelectImplied()
  19.                 Dim ss As SelectionSet = res.Value
  20.                 If ss IsNot Nothing Then
  21.                         If ss.Count = 1 Then
  22.                                 Using tr As Transaction = doc.TransactionManager.StartTransaction()
  23.                                         Dim line As Line = TryCast(tr.GetObject(ss(0).ObjectId, OpenMode.ForRead), Line)
  24.                                         If line IsNot Nothing Then
  25.                                                 Dim rb As ResultBuffer = line.GetXDataForApplication("MyApp")
  26.                                                 If rb IsNot Nothing Then
  27.                                                         m_Veto = True
  28.                                                 End If
  29.                                         End If
  30.                                 End Using
  31.                         End If
  32.                 End If
  33.         End Sub
  34.         Private Shared Sub vetoCommand(sender As Object, e As DocumentLockModeChangedEventArgs)
  35.                 If e.GlobalCommandName.ToLower() = "properties" Then
  36.                         If m_Veto Then
  37.                                 e.Veto()

  38.                                 Application.ShowAlertDialog("hello")
  39.                                 m_Veto = False
  40.                         End If
  41.                 End If
  42.         End Sub
  43. End Class
发表于 2023-10-29 03:17:50 | 显示全部楼层
本帖最后由 sfzyr 于 2023-12-4 02:27 编辑
雪山飞狐_lzh 发表于 2009-5-30 16:05
Com的版本,引用两个类型库

(这个 veto 在vlisp中,如何调用啊?)
Autodesk.AutoCAD.ApplicationServices这个在lisp中无法引入
另外e.veto,如何写。
  1. ;;;=======创建文档管理器反应器*docmReactor*及回调函数==============================
  2. (defun at_docm_reactor (/)
  3.   (if (not *docmReactor*)
  4.     (setq *docmReactor*
  5.            (vlr-docmanager-reactor
  6.              nil
  7.              '((:vlr-documentLockModeChanged . vetoCommand))
  8.            )
  9.     )
  10.   ) ;_定义文档管理器反应器*docmReactor*
  11. )
  12. (defun vetoCommand (reactorObject parameterlist / e)
  13.   (setq e parameterlist)
  14.   (if (wcmatch (strcase (nth 4 e)) "*eattedit*,*EATTEDIT*")
  15.     (progn
  16.       (princ "hello")
  17.       (princ "如何调用 veto()方法屏蔽(阻止)命令运行")
  18.     )
  19.   )
  20. )
  21. <a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=188809&highlight=%CB%AB%BB%F7&_dsign=2338ef59" target="_blank">双击CAD对象,显示自定义对话框实现方法,用vlisp怎么调用这个veto()方法? - AutoLISP/Visual LISP 编程技术 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz! (mjtd.com)</a>


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

本版积分规则

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

GMT+8, 2024-11-25 04:21 , Processed in 0.158122 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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