ziliujiang
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数15
  • QQ
  • 铜币158枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:3340回复:13

用AO或者AE做地物编辑的时候...........

楼主#
更多 发布于:2005-03-08 09:55
请问用AO或者AE做地物编辑的时候,想让选中的目标线条上的节点vertex用小方框高亮显示出来怎么做啊?请教了 谢谢啊
[此贴子已经被作者于2005-3-8 9:58:05编辑过]
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2005-03-08 10:41
<P>'功能:显示地物节点
Public Sub ShowAllVertex()
On Error GoTo errHandle:
    Dim ff_t_FeatureCursor As IFeatureCursor
    Dim ff_t_pFeature As IFeature
    If ff_m_CurLayer Is Nothing Then Exit Sub
    
    
    '获取选中的地物
    Set ff_t_FeatureCursor = GetSelectedFeatures
    
    If ff_t_FeatureCursor Is Nothing Then Exit Sub
    '得到要显示节点的地物
    Set ff_t_pFeature = ff_t_FeatureCursor.NextFeature
    If ff_t_pFeature Is Nothing Then Exit Sub
    
    '只选中一个地物进行节点移动
    ff_m_Map.ClearSelection
    ff_m_Map.SelectFeature ff_m_CurLayer, ff_t_pFeature
    Set ff_m_ActiveView = ff_m_Map
    ff_m_ActiveView.Refresh
    
    '如果为点状地物,不显示节点
    If ff_t_pFeature.Shape.GeometryType = esriGeometryPoint Then Exit Sub
    
    Dim pFeatureArray As IArray
    
    Set pFeatureArray = New esriSystem.Array
    pFeatureArray.Add ff_t_pFeature
  
    '符号初始化
    Call SymbolInit
    
    Dim pFeature As IFeature
    Dim pPointCol As IPointCollection
    Dim pPoint As IPoint
    Dim i As Long, j As Long
    Set m_VertexGeoBag = New GeometryBag
    For i = 0 To pFeatureArray.Count - 1
        Set pFeature = pFeatureArray.Element(i)
        Set pPointCol = pFeature.ShapeCopy
        For j = 0 To pPointCol.PointCount - 1
            Set pPoint = pPointCol.Point(j)
            If j = 0 Or j = pPointCol.PointCount - 1 Then
                displayGraphic pPoint, , m_EndPointSym
                pPoint.ID = 10
            Else
                displayGraphic pPoint, , m_VertexSym
                pPoint.ID = 100
            End If
            m_VertexGeoBag.AddGeometry pPoint
        Next j
    Next i
    '显示节点鼠标状态
    m_blnShowVertexStatus = True
    
    Exit Sub
errHandle:
    MsgBox Err.Description, vbOKOnly, "错误"</P><P>End Sub</P>
举报 回复(0) 喜欢(0)     评分
ziliujiang
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数15
  • QQ
  • 铜币158枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-03-08 12:52
谢谢哈 谢谢老大 我试试 <img src="images/post/smile/dvbbs/em05.gif" />
举报 回复(0) 喜欢(0)     评分
ziliujiang
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数15
  • QQ
  • 铜币158枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-03-08 14:28
示意代码中关键的显示部分没有贴出来哦 老大 SymbolInit, displayGraphic这两个函数蛮关键呀 主要就是看节点如何显示出来的呀 谢谢了 <img src="images/post/smile/dvbbs/em02.gif" />
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
4楼#
发布于:2005-03-08 14:37
'功能:符号初始化
Private Sub SymbolInit()
    Dim pFcolor As IColor
    Dim pOcolor As IColor
    Dim pTrackcolor As IColor
    Dim pVcolor As IColor
    Set pFcolor = New RgbColor
    Set pOcolor = New RgbColor
    Set pTrackcolor = New RgbColor
    Set pVcolor = New RgbColor
    pFcolor.RGB = RGB(255, 0, 0)
    pOcolor.RGB = RGB(0, 0, 255)
    pTrackcolor.RGB = RGB(0, 255, 255)
    pVcolor.RGB = RGB(0, 255, 0)
    Set m_MarkerSym = New SimpleMarkerSymbol
    m_MarkerSym.Style = esriSMSCircle
    m_MarkerSym.Color = pFcolor
    m_MarkerSym.Outline = True
    m_MarkerSym.OutlineColor = pOcolor
    m_MarkerSym.OutlineSize = 1
    Set m_VertexSym = New SimpleMarkerSymbol
    m_VertexSym.Style = esriSMSSquare
    m_VertexSym.Color = pVcolor
    m_VertexSym.Size = 4
    Set m_EndPointSym = New SimpleMarkerSymbol
    m_EndPointSym.Style = esriSMSSquare
    m_EndPointSym.Color = pFcolor
    m_EndPointSym.Size = 4
    Set m_LineSym = New SimpleLineSymbol
    m_LineSym.Color = pFcolor
    m_LineSym.Width = 1
    Set m_TracklineSym = New SimpleLineSymbol
    m_TracklineSym.Color = pTrackcolor
    m_TracklineSym.Width = 1
    Dim pOsym As ISimpleLineSymbol
    Set pOsym = New SimpleLineSymbol
    pOsym.Color = pOcolor
    pOsym.Width = 1
    Set m_FillSym = New SimpleFillSymbol
    m_FillSym.Color = pFcolor
    m_FillSym.Style = esriSFSVertical
    m_FillSym.Outline = pOsym
End Sub
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
5楼#
发布于:2005-03-08 14:37
<P>'功能:在地图上显示所画图形
Public Sub displayGraphic(pGeometry As IGeometry, Optional pColor As IColor = Nothing, _
                          Optional pSymbol As ISymbol = Nothing)
On Error GoTo errHandle:
    Dim pActiveView As IActiveView
    Set pActiveView = ff_m_Map</P><P>    If Not pColor Is Nothing Then
        Dim pMSym As ISimpleMarkerSymbol
        Set pMSym = New SimpleMarkerSymbol
        pMSym.Style = esriSMSCircle
        pMSym.Color = pColor
  
        Dim pLSym As ISimpleLineSymbol
        Set pLSym = New SimpleLineSymbol
        pLSym.Color = pColor
    
        Dim pSFSym As ISimpleFillSymbol
        Set pSFSym = New SimpleFillSymbol
        pSFSym.Color = pColor
        pSFSym.Style = esriSFSSolid
  
    End If
    
    pActiveView.ScreenDisplay.StartDrawing pActiveView.ScreenDisplay.hDC, -1
    Select Case pGeometry.GeometryType
        Case 1
            If Not pColor Is Nothing Then
                pActiveView.ScreenDisplay.SetSymbol pMSym
            ElseIf Not pSymbol Is Nothing Then
                pActiveView.ScreenDisplay.SetSymbol pSymbol
            Else
                pActiveView.ScreenDisplay.SetSymbol m_MarkerSym
            End If
            pActiveView.ScreenDisplay.DrawPoint pGeometry
        Case 3
            If Not pColor Is Nothing Then
                pActiveView.ScreenDisplay.SetSymbol pLSym
            ElseIf Not pSymbol Is Nothing Then
                pActiveView.ScreenDisplay.SetSymbol pSymbol
            Else
                pActiveView.ScreenDisplay.SetSymbol m_LineSym
            End If
            pActiveView.ScreenDisplay.DrawPolyline pGeometry
        Case 4
            If Not pColor Is Nothing Then
                pActiveView.ScreenDisplay.SetSymbol pSFSym
            ElseIf Not pSymbol Is Nothing Then
                pActiveView.ScreenDisplay.SetSymbol pSymbol
            Else
                pActiveView.ScreenDisplay.SetSymbol m_FillSym
            End If
            pActiveView.ScreenDisplay.DrawPolygon pGeometry
    End Select
    pActiveView.ScreenDisplay.FinishDrawing
    Exit Sub
errHandle:
    MsgBox Err.Description, vbOKOnly, "错误"</P><P>End Sub</P>
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
6楼#
发布于:2005-03-08 14:38
<P>这个只能是给你一些帮助</P><P>具体还需要你自己改,AO的接口比较多,关键是要你对接口了解了</P>
举报 回复(0) 喜欢(0)     评分
ziliujiang
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数15
  • QQ
  • 铜币158枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2005-03-08 15:10
谢谢老大啊 的确是很多接口还没有熟悉 也多谢指点<img src="images/post/smile/dvbbs/em02.gif" />
举报 回复(0) 喜欢(0)     评分
ziliujiang
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数15
  • QQ
  • 铜币158枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2005-03-08 15:51
修改之后 测试了一下 发现选中某Polyline之后,其vertex and endpoints确实能够draw出来 但是只是一闪而过了 之后又回复了简单的选择状态   如何能够保持这些节点的突出显示状态呢?
举报 回复(0) 喜欢(0)     评分
万里云
路人甲
路人甲
  • 注册日期2005-01-14
  • 发帖数114
  • QQ
  • 铜币414枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2005-03-08 17:17
<P>老大就是老大,我冥思苦想一下午也没思路</P><P>总算有了思路方向哈</P>
女口果人尔能看日月白这段言舌,那言兑日月人尔白勺目艮目青有严重白勺散光 
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部