阅读:2625回复:6
我刚用AO+VB,那位能给点,移动线、点, 复制线、点,旋转线、点的代码,那位高手给点代码,
<P>我刚用AO+VB,那位能给点,移动线、点, 复制线、点,旋转线、点的代码,那位高手给点代码,</P>
|
|
1楼#
发布于:2005-07-26 09:44
<P>还是问点问题实际点吧</P>
<img src="images/post/smile/dvbbs/em02.gif" /> |
|
|
2楼#
发布于:2005-07-26 17:40
<P>刚学的,给点代码片段就可以了,知道该用那几个接口,那几个方法,就可以了</P>
<P>我查找了正个乱坛都没有找到,很急的,拜托了</P> |
|
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> |
|
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> |
|
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> |
|
6楼#
发布于:2005-07-26 17:50
<P>那位高手有空帮我看看,给点思路,该用那些接口,那些方法</P>
<P>谢谢了</P> |
|