找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 861|回复: 6

[VBA函数]:cad 中实体通过句柄连到数据库中的属性

[复制链接]
发表于 2003-6-27 21:52:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我想做个查询系统用一个符号表示阀门(block) 从数据库通过坐标 把阀门展到cad中了,并把每个实体的handle传回数据库中, 但我在实现从cad到数据库的时候 做得不理想 ,我想做到 图和数据库的互动 用鼠标随便在Cad中点某个阀门就通过handle看到其在数据库中的属性。
我用的是GetEntity不太方便做不到互动效果。
在下谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-6-28 16:52:10 | 显示全部楼层
首先用GetEntity获取实体,然后判断实体(块)的名称如果是阀门的话,那么就根据它的句柄从数据库中查询它的信息,弹出一个窗体,在上面显示查询到的信息。也可以借助于时间控件,延迟一定时间后自动关闭窗体。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-28 21:17:00 | 显示全部楼层
使用句柄请注意,句柄本身不稳定,当一个文件插入到另外一个文件中时,这个文件中的句柄将发生变化。我个人认为通过使用附加扩展信息比较可靠,只是检索起来比较麻烦。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-2 22:39:25 | 显示全部楼层
斑竹
这种想法好象没什么新意,我看了一个高手做的东东,只要在用右键cad 中随编 点击 一条线 ,一个点,一个块......(鼠标的形状还是默认的形状,并没有变成用getEntity时的拾取框)就可以把图形的句柄传到数据库中,从而读出属性。我想他可能是用了鼠标右键单击的事件。
咳 技不如人,被人牵着鼻子走,人家要多少钱就的给人多少,遭老罪了。他日 ,我若实现此功能,定公开代码。
大家多交流。为不被人牵着鼻子走,而努力学习cad
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-3 08:46:06 | 显示全部楼层
最初由 savasava 发布
[B]斑竹
这种想法好象没什么新意,我看了一个高手做的东东,只要在用右键cad 中随编 点击 一条线 ,一个点,一个块......(鼠标的形状还是默认的形状,并没有变成用getEntity时的拾取框)就可以把图形的句柄传到数据... [/B]

说得好!
但有一点,我觉得,我们缺少的不是技术,而是新奇的想法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-3 10:12:43 | 显示全部楼层
你希望的是否是这个效果
STARTC运行,ENDC停止

  1.   [FONT=courier new]
  2. Dim myC As Class1

  3. Sub startC()
  4.     Set myC = New Class1
  5. End Sub

  6. Sub endC()
  7.     Set myC = Nothing
  8.    
  9. End Sub

  10.   [/FONT]


新建一个CLASS MODULE,在类模块中加入以下程序

  1.   [FONT=courier new]
  2. Public WithEvents Doc As AcadDocument




  3. Private Sub Class_Initialize()
  4.     Set Doc = Application.ActiveDocument
  5. End Sub

  6. Private Sub Doc_BeginDoubleClick(ByVal PickPoint As Variant)
  7. End Sub


  8. Private Sub Doc_BeginRightClick(ByVal PickPoint As Variant)
  9.     On Error Resume Next
  10.     Dim SSs As AcadSelectionSets
  11.     Set SSs = Doc.SelectionSets
  12.    
  13.     Dim TempS As AcadSelectionSet
  14.     If IsNull(Doc.SelectionSets("asdf_aos")) Then
  15.         Set TempS = SSs.Add("asdf_aos")
  16.     Else
  17.         Set TempS = SSs("asdf_aos")
  18.         TempS.Clear
  19.     End If
  20.    
  21.     TempS.SelectAtPoint PickPoint
  22.    
  23.    
  24.     '.GetEntity returnObj, PickPoint
  25.     If TempS.Count <> 0 Then
  26.         MsgBox "The object type is: " & TempS.Item(0).ObjectName', , "GetEntity Example"
  27.     End If
  28.     TempS.Delete
  29. End Sub

  30.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-6 10:09:14 | 显示全部楼层
多谢Laoyao 兄
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-25 12:13 , Processed in 0.181886 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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