|
阅读:1398回复:2
太奇怪了,跪求大家帮我!!用AO做的一个从CAD转成Shp,为什么最后只有属性没有图形?
<P>程序如下:最后只有属性而没有图形,大家一定要帮我啊,谢谢了!!!!</P>
<P>Private Sub CAD2shp()<BR>Dim pMxdoc As IMxDocument<BR>Set pMxdoc = ThisDocument<BR>Dim pMap As IMap<BR>Set pMap = pMxdoc.FocusMap<BR>Dim pGroupLayer As ICompositeLayer<BR>Set pGroupLayer = pMap.Layer(0)<BR>Dim pFlayer As IFeatureLayer<BR>Set pFlayer = pGroupLayer.Layer(2)</P> <P>Dim pQFilter As IQueryFilter<BR>Set pQFilter = New QueryFilter<BR>pQFilter.WhereClause = "layer='8110' or layer='8120'"</P> <P>Dim pFeatureCursor As IFeatureCursor<BR>Set pFeatureCursor = pFlayer.Search(pQFilter, False)<BR>Dim pCadFeature As IFeature<BR>Set pCadFeature = pFeatureCursor.NextFeature</P> <P>Const strFolder As String = "F:\dixingtu\data"<BR> Const strName As String = "MyShapeFile"<BR> ' Dont include .shp extension<BR> Const strShapeFieldName As String = "Shape"<BR> ' Open the folder to contain the shapefile as a workspace<BR> Dim pFWS As IFeatureWorkspace<BR> Dim pWorkspaceFactory As IWorkspaceFactory<BR> Set pWorkspaceFactory = New ShapefileWorkspaceFactory<BR> Set pFWS = pWorkspaceFactory.OpenFromFile(strFolder, 0)<BR> <BR> Dim pWorkspaceEdit As IWorkspaceEdit<BR> Set pWorkspaceEdit = pFWS<BR> <BR> pWorkspaceEdit.StartEditing True<BR> pWorkspaceEdit.StartEditOperation</P> <P> ' Set up a simple fields collection<BR> Dim pFields As IFields<BR> Dim pFieldsEdit As IFieldsEdit<BR> Set pFields = New esriGeoDatabase.Fields<BR> Set pFieldsEdit = pFields<BR> Dim pField As IField<BR> Dim pFieldEdit As IFieldEdit<BR> ' Make the shape field<BR> ' it will need a geometry definition, with a spatial reference<BR> Set pField = New esriGeoDatabase.Field<BR> Set pFieldEdit = pField<BR> pFieldEdit.Name = strShapeFieldName<BR> pFieldEdit.Type = esriFieldTypeGeometry<BR> Dim pGeomDef As IGeometryDef<BR> Dim pGeomDefEdit As IGeometryDefEdit<BR> Set pGeomDef = New GeometryDef<BR> Set pGeomDefEdit = pGeomDef<BR> With pGeomDefEdit<BR> .GeometryType = esriGeometryPolyline<BR> Set .SpatialReference = New UnknownCoordinateSystem<BR> End With<BR> Set pFieldEdit.GeometryDef = pGeomDef<BR> pFieldsEdit.AddField pField<BR>' Add another miscellaneous text field<BR>Set pField = New esriGeoDatabase.Field<BR>Set pFieldEdit = pField<BR>With pFieldEdit<BR>.Length = 30<BR>.Name = "Elevation"<BR>.Type = esriFieldTypeInteger<BR>End With<BR>pFieldsEdit.AddField pField<BR>' Create the shapefile<BR>Dim pShpFeatClass As IFeatureClass<BR>Set pShpFeatClass = pFWS.CreateFeatureClass(strName, pFields, Nothing, Nothing, esriFTSimple, strShapeFieldName, "")<BR>Dim pShpFeature As IFeature</P> <P>Do Until pCadFeature Is Nothing<BR>Set pShpFeature = pShpFeatClass.CreateFeature<BR>pShpFeature.Value(2) = pCadFeature.Value(18)<BR>pShpFeature.Store<BR>Set pCadFeature = pFeatureCursor.NextFeature<BR>Loop</P> <P>pWorkspaceEdit.StopEditOperation<BR>pWorkspaceEdit.StopEditing True</P> <P>End Sub</P> |
|
|
1楼#
发布于:2007-12-13 15:44
<P>Do Until pCadFeature Is Nothing<BR>Set pShpFeature = pShpFeatClass.CreateFeature</P>
<P>pShpFeature.Shape = pCadFeature.ShapeCopy<BR>pShpFeature.Value(2) = pCadFeature.Value(18)<BR>pShpFeature.Store<BR>Set pCadFeature = pFeatureCursor.NextFeature<BR>Loop</P> |
|
|
2楼#
发布于:2008-01-25 11:31
有帮助,先看看
|
|