欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap FreeTalk
   您现在位于: 首页技术专栏ArcGIS应用与开发AO开发 → 正文
基于AE(SceneControl)的要素信息查询源代码
07-11-14 00:00:00 作者: 出处:

代码下载:


点击浏览该文件

部分代码:

Private Sub ArcSceneControl_OnMouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal X As Long, ByVal Y As Long)
              ArcSceneControl.SceneGraph.IsNavigating = False
              Call Identify3DMap(X, Y)
end sub

'输入:当前3D地图,x坐标,y坐标,引用公共变量M_pFeatureArray
'输出:对3D地图上的目标选中,调用frmidentify显示选中目标的信息
'功能:单点查询
'程序:tjh 2005.1.29
Private Sub Identify3DMap(X As Long, Y As Long)
    
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
        'QI for IBasicMap from IScene
      Dim pBasicMap As IBasicMap
      Set pBasicMap = ArcSceneControl.SceneGraph.Scene
      'QI for IScreenDisplay from ISceneGraph
      Dim pScreenDisplay As IScreenDisplay
      Set pScreenDisplay = ArcSceneControl.SceneGraph
  
      'Translate screen coordinates into mulitple 3D objects
      Dim pHit3DSet As IHit3DSet
      ArcSceneControl.SceneGraph.LocateMultiple ArcSceneControl.SceneGraph.ActiveViewer, X, Y, esriScenePickGeography, False, pHit3DSet
      
      'Reduce the hit set to the top
      'most hits and one hit per layer
      pHit3DSet.Topmost 1.5
      pHit3DSet.OnePerLayer
      pHit3DSet.Topmost 1.1
      
      'Get an array of hits
      Dim pArray As IArray
      Set pArray = pHit3DSet.Hits
      If pArray.Count = 0 Then Exit Sub
    
      'Loop through each hit
      Dim i As Integer
      ReDim M_pFeatureArray(0)
      For i = 0 To pArray.Count - 1
        
        'Get the hit
        Dim pHit3D As IHit3D
        Set pHit3D = pArray.Element(i)
        'Get the hit location
        Dim pPoint As IPoint
        Set pPoint = pHit3D.Point
        If pPoint Is Nothing Then Exit Sub
        'Get the layer that was hit
        If Not TypeOf pHit3D.Owner Is ILayer Then Exit Sub
        Dim pLayer As ILayer
        Set pLayer = pHit3D.Owner
        'Get the feature that was hit
        Dim pObject As IUnknown
        Set pObject = pHit3D.object
        
        'Add to identify dialog
        ReDim Preserve M_pFeatureArray(UBound(M_pFeatureArray) + 1)
        Dim pFeature As iFeature
        Set pFeature = pHit3D.object
        Set M_pFeatureArray(UBound(M_pFeatureArray) - 1).iFeature = pFeature
        M_pFeatureArray(UBound(M_pFeatureArray) - 1).iLayerName = CStr(pLayer.Name)
    
      Next i
    
     '''''''''''''''''''''''''''''''''''''''''''''''''
     If frmIdentify.Visible = False Then
        frmIdentify.Show 0
     End If
      frmIdentify.SetFocus
     Call frmIdentify.InitTreeView
End Sub

(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  

    关于我们友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
     
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.
     

                   滇ICP备05006901号