qhg103
路人甲
路人甲
  • 注册日期2004-07-12
  • 发帖数48
  • QQ
  • 铜币311枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
阅读:2408回复:6

我刚用AO+VB,那位能给点,移动线、点, 复制线、点,旋转线、点的代码,那位高手给点代码,

楼主#
更多 发布于:2005-07-22 17:16
<P>我刚用AO+VB,那位能给点,移动线、点,  复制线、点,旋转线、点的代码,那位高手给点代码,</P>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15946
  • QQ554730525
  • 铜币25338枚
  • 威望15363点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2005-07-26 09:44
<P>还是问点问题实际点吧</P>
<img src="images/post/smile/dvbbs/em02.gif" />
举报 回复(0) 喜欢(0)     评分
qhg103
路人甲
路人甲
  • 注册日期2004-07-12
  • 发帖数48
  • QQ
  • 铜币311枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
2楼#
发布于:2005-07-26 17:40
<P>刚学的,给点代码片段就可以了,知道该用那几个接口,那几个方法,就可以了</P>
<P>我查找了正个乱坛都没有找到,很急的,拜托了</P>
举报 回复(0) 喜欢(0)     评分
qhg103
路人甲
路人甲
  • 注册日期2004-07-12
  • 发帖数48
  • QQ
  • 铜币311枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
3楼#
发布于:2005-07-26 17:44
<P>在 地图控件的MOUSE——DOWN 事件里的代码</P>
<P> '平移管线<BR>        Case OP_STATE_MOVELINE<BR>            Set pPoint = g_pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y)<BR>           str = SelectMoveLine(pPoint, g_pFeatureSelect)<BR>           If Not g_pFeatureSelect Is Nothing Then<BR>                Set pFeatureClass = g_pEditFeatureLayer.FeatureClass<BR>                Set inumIDs = g_pFeatureSelect.SelectionSet.IDs<BR>                l = inumIDs.Next<BR>                If l > 0 Then<BR>                     Set g_pFeature = pFeatureClass.GetFeature(l)<BR>                     If Not g_pFeature Is Nothing Then<BR>                        '判断是点类型<BR>                         If g_pFeature.Shape.GeometryType = 1 Then<BR>                             Set g_pDisplayFeedback = g_pActiveView.ScreenDisplay<BR>                             Dim pMovePointF As IMovePointFeedback<BR>                             Set pMovePointF = g_pDisplayFeedback<BR>                             pMovePointF.Start g_pFeature.Shape, pPoint<BR>                        '判断是线类型<BR>                         ElseIf g_pFeature.Shape.GeometryType = 3 Then<BR>                             Set g_pDisplayFeedback = New MoveLineFeedback<BR>                             Set g_pDisplayFeedback.Display = g_pActiveView.ScreenDisplay<BR>                             Dim pMoveLineF As IMoveLineFeedback<BR>                             Set pMoveLineF = g_pDisplayFeedback<BR>                             pMoveLineF.Start g_pFeature.Shape, pPoint<BR>                        '判断是范围<BR>                         ElseIf g_pFeature.Shape.GeometryType = 5 Then<BR>                              Set g_pDisplayFeedback = New MoveEnvelopeFeedback<BR>                              Set g_pDisplayFeedback = g_pActiveView.ScreenDisplay<BR>                              Dim pMoveEnvelopeF As IMoveEnvelopeFeedback<BR>                              Set pMoveEnvelopeF = g_pDisplayFeedback<BR>                              pMoveEnvelopeF.Start g_pFeature.Shape, pPoint<BR>                        '判断是面类型<BR>                          ElseIf g_pFeature.Shape.GeometryType = 4 Then<BR>                              Set g_pDisplayFeedback = New MovePolygonFeedback<BR>                              Set g_pDisplayFeedback.Display = g_pActiveView.ScreenDisplay<BR>                              Dim pMovePolygonF  As IMoveEnvelopeFeedback<BR>                              Set pMovePolygonF = g_pDisplayFeedback<BR>                              pMovePolygonF.Start g_pFeature.Shape, pPoint<BR>                          End If<BR>                      End If<BR>                 End If<BR>         End If<BR>        '旋转管线<BR>        Case OP_STATE_ROTATELINE<BR>           Set pPoint = g_pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y)<BR>           str = SelectMoveLine(pPoint, g_pFeatureSelect)<BR>           If Not g_pFeatureSelect Is Nothing Then<BR>                Set pFeatureClass = g_pEditFeatureLayer.FeatureClass<BR>                Set inumIDs = g_pFeatureSelect.SelectionSet.IDs<BR>                l = inumIDs.Next<BR>                If l > 0 Then<BR>                    Set g_pFeature = pFeatureClass.GetFeature(l)<BR>                    If Not g_pFeature Is Nothing Then<BR>                        '判断是线类型<BR>                        If g_pFeature.Shape.GeometryType = 3 Then<BR>                            Dim objPoint As IPoint<BR>                            Set objPoint = New Point<BR>'                            Set pRotateTracker = New esriDisplay.RotateTracker<BR>                            Set pRotateTracker.Display = g_pActiveView.ScreenDisplay<BR>                            pRotateTracker.ClearGeometry<BR>                            pRotateTracker.AddGeometry g_pFeature.Shape<BR>                            objPoint.PutCoords (g_pFeature.Extent.Envelope.xMax + g_pFeature.Extent.Envelope.xMin) / 2, (g_pFeature.Extent.Envelope.yMax + g_pFeature.Extent.Envelope.yMin) / 2<BR>                            pRotateTracker.Origin = objPoint<BR>                            pRotateTracker.OnMouseDown<BR>                        End If<BR>                    End If<BR>                End If<BR>          End If<BR>        '复制管线<BR>        Case OP_STATE_COPYLINE<BR>            Set pPoint = g_pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y)<BR>           str = SelectMoveLine(pPoint, g_pFeatureSelect)<BR>           If Not g_pFeatureSelect Is Nothing Then<BR>                Set pFeatureClass = g_pEditFeatureLayer.FeatureClass<BR>                Set inumIDs = g_pFeatureSelect.SelectionSet.IDs<BR>                l = inumIDs.Next<BR>                If l > 0 Then<BR>                    Set g_pFeature = pFeatureClass.GetFeature(l)<BR>                    If Not g_pFeature Is Nothing Then<BR>                         '判断是线类型<BR>                        If g_pFeature.Shape.GeometryType = 3 Then<BR>'                            Dim pLineElement As ILineElement<BR>'                            Dim pCopyLineElement As ILineElement<BR>'                            Dim pGraphicsContainer As IGraphicsContainer<BR>'                            Set g_pElement.Geometry = g_pFeature.Shape<BR>'                            Set pLineElement = g_pElement<BR>'                            Set pCopyLineElement = New LineElement<BR>'                            pCopyLineElement.Symbol = pLineElement.Symbol<BR>'                            Set g_pElement = pCopyLineElement<BR>'                            g_pElement.Geometry = g_pFeature.Shape<BR>'                            Set pGraphicsContainer = g_pActiveView<BR>'                            pGraphicsContainer.AddElement g_pElement, 0<BR>                            Dim objCopy As IObjectCopy<BR>                            Set objCopy = New ObjectCopy<BR>                            Dim copyFeature As IUnknown<BR>                            Set copyFeature = objCopy.Copy(g_pFeature)<BR>                            copyFeature.Overwrite<BR>                            <BR>                           <BR>                             pObjectCopy.Overwrite pCopiedMap, pToOverwriteMap<BR>                        End If<BR>                    End If<BR>                End If<BR>            End If<BR>        '延长管线<BR>        Case OP_STATE_EXTENDLINE<BR>        <BR>        '打断管线<BR>        Case OP_STATE_BREAKLINE<BR>        <BR>        '移动管点<BR>        Case OP_STATE_MOVEPOINT<BR>        <BR>        '复制管点<BR>        Case OP_STATE_COPYPOINT</P>
举报 回复(0) 喜欢(0)     评分
qhg103
路人甲
路人甲
  • 注册日期2004-07-12
  • 发帖数48
  • QQ
  • 铜币311枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
4楼#
发布于:2005-07-26 17:46
<P>MOUSE——MOVE事件里的代码 </P>

<P>'移动管线<BR>        Case OP_STATE_MOVELINE<BR>             If Not g_pDisplayFeedback Is Nothing Then<BR>                g_pDisplayFeedback.MoveTo pPoint<BR>            End If<BR>        '旋转管线<BR>        Case OP_STATE_ROTATELINE<BR>           If Not pRotateTracker Is Nothing Then<BR>                pRotateTracker.OnMouseMove pPoint<BR>           End If<BR>        '复制管线<BR>        Case OP_STATE_COPYLINE<BR>        <BR>        '延长管线<BR>        Case OP_STATE_EXTENDLINE<BR>        <BR>        '打断管线<BR>        Case OP_STATE_BREAKLINE<BR>        <BR>        '移动管点<BR>        Case OP_STATE_MOVEPOINT<BR>        <BR>        '复制管点<BR>        Case OP_STATE_COPYPOINT</P>
举报 回复(0) 喜欢(0)     评分
qhg103
路人甲
路人甲
  • 注册日期2004-07-12
  • 发帖数48
  • QQ
  • 铜币311枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
5楼#
发布于:2005-07-26 17:47
<P>MOUSE——UP事件里的代码</P>
<P> Case OP_STATE_MOVELINE<BR>                Dim pGeoResult As IGeometry<BR>                If Not g_pFeature Is Nothing Then<BR>'                    Set g_pGeometry = g_pElement.Geometry<BR>                    If g_pFeature.Shape.GeometryType = 1 Then<BR>                        Dim pMovePointF As IMovePointFeedback<BR>                        Set pMovePointF = g_pDisplayFeedback<BR>                        Set pGeoResult = pMovePointF.Stop<BR>                    ElseIf g_pFeature.Shape.GeometryType = 3 Then<BR>                        Dim pMoveLineF As IMoveLineFeedback<BR>                        Set pMoveLineF = g_pDisplayFeedback<BR>                        Set pGeoResult = pMoveLineF.Stop<BR>                    ElseIf g_pFeature.Shape.GeometryType = 5 Then<BR>                        Dim pMoveEnvelopeF As IMoveEnvelopeFeedback<BR>                        Set pMoveEnvelopeF = g_pDisplayFeedback<BR>                        Set pGeoResult = pMoveEnvelopeF.Stop<BR>                    ElseIf g_pFeature.Shape.GeometryType = 4 Then<BR>                        Dim pMovePolygonF As IMovePolygonFeedback<BR>                        Set pMovePolygonF = g_pDisplayFeedback<BR>                        Set pGeoResult = pMovePolygonF.Stop<BR>                    End If<BR>                    Set g_pFeature.Shape = pGeoResult<BR>                     Dim pWorkspaceEdit As esriGeoDatabase.IWorkspaceEdit<BR>                    '获得sde的工作空间<BR>                    Set pWorkspaceEdit = g_pConnection.m_pSdeWorkspace<BR>                    '开始编辑操作<BR>                    pWorkspaceEdit.StartEditOperation<BR>                    g_pFeature.Store<BR>                    pWorkspaceEdit.StopEditOperation<BR>                    Set g_pDisplayFeedback = Nothing<BR>                    Set g_pFeatureSelect = Nothing<BR>                   g_pActiveView.Refresh<BR>                   g_pMap.ClearSelection<BR>                   DoRefreshMap<BR>                End If<BR>           '旋转管线<BR>        Case OP_STATE_ROTATELINE<BR>            If Not pRotateTracker Is Nothing Then<BR>                pRotateTracker.OnMouseUp<BR>            End If<BR>        '复制管线<BR>        Case OP_STATE_COPYLINE<BR>             If Not g_pElement Is Nothing Then<BR>                  Dim pTransform2D As ITransform2D<BR>                  Set pTransform2D = g_pElement<BR>                  pTransform2D.Move 20, 20<BR>             End If<BR>        '延长管线<BR>        Case OP_STATE_EXTENDLINE<BR>        <BR>        '打断管线<BR>        Case OP_STATE_BREAKLINE<BR>        <BR>        '移动管点<BR>        Case OP_STATE_MOVEPOINT<BR>        <BR>        '复制管点<BR>        Case OP_STATE_COPYPOINT</P>
举报 回复(0) 喜欢(0)     评分
qhg103
路人甲
路人甲
  • 注册日期2004-07-12
  • 发帖数48
  • QQ
  • 铜币311枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
6楼#
发布于:2005-07-26 17:50
<P>那位高手有空帮我看看,给点思路,该用那些接口,那些方法</P>
<P>谢谢了</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部