明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4267|回复: 11

[VBA] 如何做到在autocad的窗口中点击一个块就能弹出一个窗口,并且可以修改或者设

  [复制链接]
发表于 2003-11-22 16:37:00 | 显示全部楼层 |阅读模式
[VBA] 如何做到在AutoCAD的窗口中点击一个块就能弹出一个窗口,并且可以修改或者设置该块的属性呢[br]如题,小弟要作一个配电规划的程序要画电气主接线图,我把变压器等元件做成了块
用于插入到我的图形中来。因为变压器等元件是有属性的,比如它的型号等等,我想做出这样的效果,当我用鼠标点击这个变压器块的时候就弹出一个窗口 或者对话框,用来设置或者改变这个变压器的属性  如何做到呢  诚盼各位大哥回复 多谢了
发表于 2003-11-22 16:49:00 | 显示全部楼层
单击不行,双击有对应的事件,是文档级的事件。

Private Sub AcadDocument_BeginDoubleClick(ByVal PickPoint As Variant)
    ' This example intercepts a drawing BeginDoubleClick event.
    '
    ' This event is triggered when a drawing receives
    ' a double mouse click in its working area.
    '
    ' To trigger this example event: Position the mouse over the working area of
    ' a drawing window and double-click the left mouse button

    ' Use the "ickPoint" variable to determine where on the drawing the user clicked
    MsgBox "A drawing has just been double-clicked at:" & vbCrLf & _
            PickPoint(0) & vbCrLf & _
            PickPoint(1) & vbCrLf & _
            PickPoint(2)
End Sub
 楼主| 发表于 2003-11-22 16:52:00 | 显示全部楼层
感谢大哥这么快恢复 多谢了

能否告诉小弟你的qq呢 可以有更多的问题交流 可以么
 楼主| 发表于 2003-11-22 16:55:00 | 显示全部楼层
好像这样只能获得双击的点啊
如何才能判断出他双击的是哪个具体的块呢
前提是那个块的坐标范围是不知道的
发表于 2003-11-22 17:14:00 | 显示全部楼层
判断一点处的实体可以使用选择集,使用SelectAtPoint方法。如果只选择块,还可以使用过滤机制来缩小范围。但以前听说SelectAtPoint有问题,如果不放心,也可以使用Select,模式acSelectionSetWindow窗口选择,构造一个足够小的窗口就行了,比如长宽为0.5的矩形,其它与SelectAtPoint的用法类似。
 楼主| 发表于 2003-11-22 18:13:00 | 显示全部楼层
多谢 让我试验一下吧  
  还有一个问题
  关于对象的句柄 是不是 当我把文件存盘 再读出的时候
  所有对象的句柄就都变化了呢
   
   我如果要在vb里作一个数据结构,用来记录每一个对象
   以后即使是存盘再读出来也一样有效  是否可以用句柄这个办法呢  如果不能有什么好办法呢 诚盼赐教
发表于 2003-11-22 18:22:00 | 显示全部楼层
对象的句柄Handle在一张图中是唯一的,即使关闭再打开也不会变化。但是在多张图中就会重复(即A图中的句柄与B图中的句柄会相同,但A图中的句柄在本身里是不重复的),因而涉及到多张图操作时不能用它来辨别对象。
而对象的ID在当前ACAD的所有图纸中是唯一的,但是关闭再打开就变化了,适合于多文档中的一些辨别。
如果用于操作外部数据,那么可以使用句柄,但是还要有一个文件名称来区别。
 楼主| 发表于 2003-11-22 18:28:00 | 显示全部楼层
efan2000 真是感谢啊 很想交你这个朋友  可否认识一下呢
我的qq是  11397591  你要是不方便公开qq 那你来加我好么
我在线等
 楼主| 发表于 2003-11-22 20:40:00 | 显示全部楼层
我按照efan2000说的做了 可是怎么当我在autocad上双击的时候
怎么没有触发事件呢 (我是把autocad抓到我的程序的一个窗体里了)
发表于 2003-11-23 07:30:00 | 显示全部楼层
双击时就有选择集了,你可能直接用该选择集(还剩下双点并操作后怎么防止特性框的出现和把选择集清除掉的操作)。
  1. Private Sub AcadDocument_BeginDoubleClick(ByVal PickPoint As Variant)
  2.     Dim ss As AcadSelectionSet
  3.     Dim i As Integer
  4.     Dim txt As String
  5.    
  6.     Set ss = ThisDrawing.ActiveSelectionSet
  7.     If ss.Count > 0 Then
  8.         txt = "共选定了" & ss.Count & "个图元"
  9.         For i = 0 To ss.Count - 1
  10.             txt = txt & vbCrLf & "第" & i + 1 & "个图元名称:" & ss(i).ObjectName
  11.         Next
  12.     End If
  13.     MsgBox txt
  14. End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 13:42 , Processed in 0.201559 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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