arcmap vba 生成3维侧棱 以及 createfeature与createfeaturebuffer的区别
2010-07-05 17:02
323 查看
Sub huaxian()
Dim pMxDoc As IMxDocument
Set pMxDoc = Application.Document
Dim pMap As IMap
Set pMap = pMxDoc.FocusMap
Dim pActiveView As IActiveView
Set pActiveView = pMxDoc.FocusMap
Dim pFeatureClassOne As IFeatureClass
Dim pFLayerOne As IFeatureLayer
Dim pFeatureClassTwo As IFeatureClass
Dim pFLayerTwo As IFeatureLayer
Dim pFeatureClassNew As IFeatureClass
Dim pFLayerNew As IFeatureLayer
Set pFLayerOne = pMap.Layer(0)
Set pFLayerTwo = pMap.Layer(1)
Set pFLayerNew = pMap.Layer(2)
Set pFeatureClassOne = pFLayerOne.FeatureClass
Set pFeatureClassTwo = pFLayerTwo.FeatureClass
Set pFeatureClassNew = pFLayerNew.FeatureClass
Dim pFeatureCursorOne As IFeatureCursor
Dim pFeatureCursorTwo As IFeatureCursor
Set pFeatureCursorOne = pFeatureClassOne.Search(Nothing, True)
Set pFeatureCursorTwo = pFeatureClassTwo.Search(Nothing, True)
Dim pFeatureOne As IFeature
Dim pFeatureTwo As IFeature
Set pFeatureOne = pFeatureCursorOne.NextFeature
Set pFeatureTwo = pFeatureCursorTwo.NextFeature
Dim pPolygonOne As IPolygon
Dim pPolygonTwo As IPolygon
Dim pOnePoints As IPointCollection
Dim pTwoPoints As IPointCollection
Dim i As Integer
Dim pFromPoint As IPoint
Dim pToPoint As IPoint
Dim pPolyline As IPolyline
Dim polylinePoints As IPointCollection
Dim pFeatureNew As IFeature
'create a feature cursor and feature buffer interface
Dim pFeatCur As IFeatureCursor
Dim pFeatBuf As IFeatureBuffer
'open the feature cursor and feature buffer
Set pFeatCur = pFeatureClassNew.Insert(True)
Set pFeatBuf = pFeatureClassNew.CreateFeatureBuffer
Dim q As Long
While Not pFeatureOne Is Nothing And Not pFeatureTwo Is Nothing
Set pPolygonOne = pFeatureOne.Shape
Set pPolygonTwo = pFeatureTwo.Shape
Set pOnePoints = pPolygonOne
Set pTwoPoints = pPolygonTwo
For i = 0 To pOnePoints.PointCount - 1
Set pFromPoint = pOnePoints.Point(i)
Set pToPoint = pTwoPoints.Point(i)
Set pPolyline = New Polyline
Set polylinePoints = pPolyline
polylinePoints.AddPoint pFromPoint
polylinePoints.AddPoint pToPoint
Set pFeatureNew = pFeatBuf
Set pFeatureNew.Shape = pPolyline
q = pFeatCur.InsertFeature(pFeatBuf)
Next i
Set pFeatureOne = pFeatureCursorOne.NextFeature
Set pFeatureTwo = pFeatureCursorTwo.NextFeature
Wend
MsgBox "done!"
End Sub
——————————————————————————————————————————————————————————————————————
Sub huaxian()
Dim pMxDoc As IMxDocument
Set pMxDoc = Application.Document
Dim pMap As IMap
Set pMap = pMxDoc.FocusMap
Dim pActiveView As IActiveView
Set pActiveView = pMxDoc.FocusMap
Dim pFeatureClassOne As IFeatureClass
Dim pFLayerOne As IFeatureLayer
Dim pFeatureClassTwo As IFeatureClass
Dim pFLayerTwo As IFeatureLayer
Dim pFeatureClassNew As IFeatureClass
Dim pFLayerNew As IFeatureLayer
Set pFLayerOne = pMap.Layer(0)
Set pFLayerTwo = pMap.Layer(1)
Set pFLayerNew = pMap.Layer(2)
Set pFeatureClassOne = pFLayerOne.FeatureClass
Set pFeatureClassTwo = pFLayerTwo.FeatureClass
Set pFeatureClassNew = pFLayerNew.FeatureClass
Dim pFeatureCursorOne As IFeatureCursor
Dim pFeatureCursorTwo As IFeatureCursor
Set pFeatureCursorOne = pFeatureClassOne.Search(Nothing, True)
Set pFeatureCursorTwo = pFeatureClassTwo.Search(Nothing, True)
Dim pFeatureOne As IFeature
Dim pFeatureTwo As IFeature
Set pFeatureOne = pFeatureCursorOne.NextFeature
Set pFeatureTwo = pFeatureCursorTwo.NextFeature
Dim pPolygonOne As IPolygon
Dim pPolygonTwo As IPolygon
Dim pOnePoints As IPointCollection
Dim pTwoPoints As IPointCollection
Dim i As Integer
Dim pFromPoint As IPoint
Dim pToPoint As IPoint
Dim pPolyline As IPolyline
Dim polylinePoints As IPointCollection
Dim pFeatureNew As IFeature
While Not pFeatureOne Is Nothing and Not pFeatureTwo Is Nothing
Set pPolygonOne = pFeatureOne.Shape
Set pPolygonTwo = pFeatureTwo.Shape
Set pOnePoints = pPolygonOne
Set pTwoPoints = pPolygonTwo
For i = 0 To pOnePoints.PointCount - 1
Set pFromPoint = pOnePoints.Point(i)
Set pToPoint = pTwoPoints.Point(i)
Set pPolyline = New Polyline
Set polylinePoints = pPolyline
polylinePoints.AddPoint pFromPoint
polylinePoints.AddPoint pToPoint
Set pFeatureNew = pFeatureClassNew.CreateFeature
Set pFeatureNew.Shape = pPolyline
pFeatureNew.Store
Next i
Set pFeatureOne = pFeatureCursorOne.NextFeature
Set pFeatureTwo = pFeatureCursorTwo.NextFeature
Wend
MsgBox "done!"
End Sub
Dim pMxDoc As IMxDocument
Set pMxDoc = Application.Document
Dim pMap As IMap
Set pMap = pMxDoc.FocusMap
Dim pActiveView As IActiveView
Set pActiveView = pMxDoc.FocusMap
Dim pFeatureClassOne As IFeatureClass
Dim pFLayerOne As IFeatureLayer
Dim pFeatureClassTwo As IFeatureClass
Dim pFLayerTwo As IFeatureLayer
Dim pFeatureClassNew As IFeatureClass
Dim pFLayerNew As IFeatureLayer
Set pFLayerOne = pMap.Layer(0)
Set pFLayerTwo = pMap.Layer(1)
Set pFLayerNew = pMap.Layer(2)
Set pFeatureClassOne = pFLayerOne.FeatureClass
Set pFeatureClassTwo = pFLayerTwo.FeatureClass
Set pFeatureClassNew = pFLayerNew.FeatureClass
Dim pFeatureCursorOne As IFeatureCursor
Dim pFeatureCursorTwo As IFeatureCursor
Set pFeatureCursorOne = pFeatureClassOne.Search(Nothing, True)
Set pFeatureCursorTwo = pFeatureClassTwo.Search(Nothing, True)
Dim pFeatureOne As IFeature
Dim pFeatureTwo As IFeature
Set pFeatureOne = pFeatureCursorOne.NextFeature
Set pFeatureTwo = pFeatureCursorTwo.NextFeature
Dim pPolygonOne As IPolygon
Dim pPolygonTwo As IPolygon
Dim pOnePoints As IPointCollection
Dim pTwoPoints As IPointCollection
Dim i As Integer
Dim pFromPoint As IPoint
Dim pToPoint As IPoint
Dim pPolyline As IPolyline
Dim polylinePoints As IPointCollection
Dim pFeatureNew As IFeature
'create a feature cursor and feature buffer interface
Dim pFeatCur As IFeatureCursor
Dim pFeatBuf As IFeatureBuffer
'open the feature cursor and feature buffer
Set pFeatCur = pFeatureClassNew.Insert(True)
Set pFeatBuf = pFeatureClassNew.CreateFeatureBuffer
Dim q As Long
While Not pFeatureOne Is Nothing And Not pFeatureTwo Is Nothing
Set pPolygonOne = pFeatureOne.Shape
Set pPolygonTwo = pFeatureTwo.Shape
Set pOnePoints = pPolygonOne
Set pTwoPoints = pPolygonTwo
For i = 0 To pOnePoints.PointCount - 1
Set pFromPoint = pOnePoints.Point(i)
Set pToPoint = pTwoPoints.Point(i)
Set pPolyline = New Polyline
Set polylinePoints = pPolyline
polylinePoints.AddPoint pFromPoint
polylinePoints.AddPoint pToPoint
Set pFeatureNew = pFeatBuf
Set pFeatureNew.Shape = pPolyline
q = pFeatCur.InsertFeature(pFeatBuf)
Next i
Set pFeatureOne = pFeatureCursorOne.NextFeature
Set pFeatureTwo = pFeatureCursorTwo.NextFeature
Wend
MsgBox "done!"
End Sub
——————————————————————————————————————————————————————————————————————
Sub huaxian()
Dim pMxDoc As IMxDocument
Set pMxDoc = Application.Document
Dim pMap As IMap
Set pMap = pMxDoc.FocusMap
Dim pActiveView As IActiveView
Set pActiveView = pMxDoc.FocusMap
Dim pFeatureClassOne As IFeatureClass
Dim pFLayerOne As IFeatureLayer
Dim pFeatureClassTwo As IFeatureClass
Dim pFLayerTwo As IFeatureLayer
Dim pFeatureClassNew As IFeatureClass
Dim pFLayerNew As IFeatureLayer
Set pFLayerOne = pMap.Layer(0)
Set pFLayerTwo = pMap.Layer(1)
Set pFLayerNew = pMap.Layer(2)
Set pFeatureClassOne = pFLayerOne.FeatureClass
Set pFeatureClassTwo = pFLayerTwo.FeatureClass
Set pFeatureClassNew = pFLayerNew.FeatureClass
Dim pFeatureCursorOne As IFeatureCursor
Dim pFeatureCursorTwo As IFeatureCursor
Set pFeatureCursorOne = pFeatureClassOne.Search(Nothing, True)
Set pFeatureCursorTwo = pFeatureClassTwo.Search(Nothing, True)
Dim pFeatureOne As IFeature
Dim pFeatureTwo As IFeature
Set pFeatureOne = pFeatureCursorOne.NextFeature
Set pFeatureTwo = pFeatureCursorTwo.NextFeature
Dim pPolygonOne As IPolygon
Dim pPolygonTwo As IPolygon
Dim pOnePoints As IPointCollection
Dim pTwoPoints As IPointCollection
Dim i As Integer
Dim pFromPoint As IPoint
Dim pToPoint As IPoint
Dim pPolyline As IPolyline
Dim polylinePoints As IPointCollection
Dim pFeatureNew As IFeature
While Not pFeatureOne Is Nothing and Not pFeatureTwo Is Nothing
Set pPolygonOne = pFeatureOne.Shape
Set pPolygonTwo = pFeatureTwo.Shape
Set pOnePoints = pPolygonOne
Set pTwoPoints = pPolygonTwo
For i = 0 To pOnePoints.PointCount - 1
Set pFromPoint = pOnePoints.Point(i)
Set pToPoint = pTwoPoints.Point(i)
Set pPolyline = New Polyline
Set polylinePoints = pPolyline
polylinePoints.AddPoint pFromPoint
polylinePoints.AddPoint pToPoint
Set pFeatureNew = pFeatureClassNew.CreateFeature
Set pFeatureNew.Shape = pPolyline
pFeatureNew.Store
Next i
Set pFeatureOne = pFeatureCursorOne.NextFeature
Set pFeatureTwo = pFeatureCursorTwo.NextFeature
Wend
MsgBox "done!"
End Sub
相关文章推荐
- WM_CREATE,WM_INITDIALOG 区别,以及MFC应用程序中处理消息的顺序
- CWinThread类,以及和createthread API的区别
- 用new方法生成一个img对象和document.createElement方法创建一个img对象的区别
- clCreateBuffer的7种方式的异同、MapBuffer与clCreateBuffer某些方式的区别与联系
- ArcMap编辑SQLServer的ArcSDE图层提示:The Create Feature task could not be completed.
- VBA从Excel中生成Oracle create table
- VC中CWinThread类以及和createthread API的区别分析
- C# 和SQL server 中生成GUID 的方法 以及他们的之间的区别
- 删除MFC单文档默认菜单栏的两种方法 以及 区别 cwnd:oncreate() 和 cwnd:create()
- Buffer(ByteBuffer)以及flip,clear及rewind区别
- Linux 简单,实用,快速了解静态库和动态库的生成和使用方法以及两者的区别
- (转载)lib 和 dll 的区别、生成以及使用详解
- lib 和 dll 的区别、生成以及使用详解
- Android - arr包和jar包区别简述以及AndroidStudio生成Jar包的过程
- lib 和 dll 的区别、生成以及使用详解
- lib 和 dll 的区别、生成以及使用详解
- oracle中merge的用法,以及各版本的区别 Create
- STP手动计算生成树以及STP\RSTP\MSTP的区别
- java.nio.ByteBuffer 以及flip,clear及rewind区别
- oracle中merge的用法,以及各版本的区别 Create