/// <summary> /// 直接添加所有层--通过IFeatureClassContainer /// </summary> /// <param name="mapControlDefault">地图控件</param> /// <param name="pFeatureWorkspace">要素工作空间</param> /// <param name="strFileName">文件名,包括后缀</param> public static void GetALLCADbyWorkspace(IMapControlDefault mapControlDefault, IWorkspace pCADWorkspace, string strFileName) { IFeatureWorkspace pFeatureWorkspace = pCADWorkspace as IFeatureWorkspace; IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(strFileName); IFeatureClassContainer pFeatureClassContainer = pFeatureDataset as IFeatureClassContainer; for (int i = 0; i < pFeatureClassContainer.ClassCount; i++) { IFeatureClass pFeatureClass = pFeatureClassContainer.get_Class(i); IFeatureLayer pFeatureLayer = null; if (pFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation) { pFeatureLayer = new CadAnnotationLayerClass(); } else { pFeatureLayer = new CadFeatureLayerClass(); } if (pFeatureLayer != null) { pFeatureLayer.Name = pFeatureClass.AliasName; pFeatureLayer.FeatureClass = pFeatureClass; mapControlDefault.AddLayer(pFeatureLayer as ILayer, 0); } } }
/// <summary> /// 打开指定的CAD图层,包括点point,线polyline,多点mutilpoint,多段mutilpatch与注记(如果是注记,需要建立CadAnnotationLayerClass实例对象),添加的是空间数据对象(添加到同一个图层组中,图层组名为文件名无后缀) /// </summary> /// <param name="mapControlDefault">地图控件</param> /// <param name="pWorkspace">工作空间</param> /// <param name="strFileName">文件名,没有会追</param> public static void GetALLCADLayerFromGeo(IMapControlDefault mapControlDefault, IWorkspace pWorkspace, string strFileName) { IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; //组图层 IGroupLayer pGroupLayer = new GroupLayerClass(); pGroupLayer.Name = strFileName.Substring(0, strFileName.LastIndexOf(".")); //打开指定的的cad图层--Point IFeatureClass pFeatureClass_Point = pFeatureWorkspace.OpenFeatureClass(strFileName + ":point"); if (pFeatureClass_Point != null) { IFeatureLayer pFeatureLayer_Point = new CadFeatureLayerClass(); pFeatureLayer_Point.FeatureClass = pFeatureClass_Point; pFeatureLayer_Point.Name = pFeatureClass_Point.AliasName; pGroupLayer.Add(pFeatureLayer_Point); } //Polyline string strPlineName = System.String.Concat(strFileName, ":Polyline"); IFeatureClass pFeatClass_Polyline = pFeatureWorkspace.OpenFeatureClass(strPlineName); if (pFeatClass_Polyline != null) { IFeatureLayer pFeatureLayer_Polyline = new CadFeatureLayerClass(); pFeatureLayer_Polyline.FeatureClass = pFeatClass_Polyline; pFeatureLayer_Polyline.Name = pFeatClass_Polyline.AliasName; pGroupLayer.Add(pFeatureLayer_Polyline); pGroupLayer.Add(pFeatureLayer_Polyline); } mapControlDefault.AddLayer(pGroupLayer as ILayer, 0); }
/// <summary> /// 通过IWorkspace直接获取到CadDrawingDataset--是cad数据 /// </summary> /// <param name="mapControlDefault">地图控件</param> /// <param name="pWorkspace">工作空间</param> /// <param name="strFileName"></param> public static void GetALLCADLayer(IMapControlDefault mapControlDefault, IWorkspace pWorkspace, string strFileName) { ICadDrawingWorkspace pCadDrawingWorkspace = pWorkspace as ICadDrawingWorkspace; ICadDrawingDataset pCadDrawingDataset = pCadDrawingWorkspace.OpenCadDrawingDataset(strFileName); ICadLayer pCadLayer = new CadLayerClass(); pCadLayer.CadDrawingDataset = pCadDrawingDataset; mapControlDefault.AddLayer(pCadLayer as ILayer, 0); }
/// <summary> /// 通过ICadDrawingDataset与ICadLayer获取cad /// </summary> /// <param name="mapControlDefault">地图控件</param> /// <param name="strPathWithoutFileName">文件所在文件夹路径</param> /// <param name="strFileName">文件名,包括后缀</param> public static void GetAllCADbyCADLayer(IMapControlDefault mapControlDefault, string strPathWithoutFileName, string strFileName) { ICadDrawingDataset cadDrawingDataset = GetCadDataset(strPathWithoutFileName, strFileName); if (cadDrawingDataset == null) { return; } ICadLayer cadLayer = new CadLayerClass(); cadLayer.CadDrawingDataset = cadDrawingDataset; cadLayer.Name = strFileName; ILayer mLayer = cadLayer as ILayer; mapControlDefault.AddLayer(mLayer, 0); }
/// <summary> /// 直接添加所有层--通过IFeatureClassContainer /// </summary> /// <param name="mapControlDefault">地图控件</param> /// <param name="pFeatureWorkspace">要素工作空间</param> /// <param name="strFileName">文件名,包括后缀</param> public static void GetALLCADbyWorkspace(IMapControlDefault mapControlDefault,IWorkspace pCADWorkspace, string strFileName) { IFeatureWorkspace pFeatureWorkspace = pCADWorkspace as IFeatureWorkspace; IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(strFileName); IFeatureClassContainer pFeatureClassContainer = pFeatureDataset as IFeatureClassContainer; for (int i = 0; i < pFeatureClassContainer.ClassCount; i++) { IFeatureClass pFeatureClass = pFeatureClassContainer.get_Class(i); IFeatureLayer pFeatureLayer = null; if (pFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation) { pFeatureLayer = new CadAnnotationLayerClass(); } else { pFeatureLayer = new CadFeatureLayerClass(); } if (pFeatureLayer != null) { pFeatureLayer.Name = pFeatureClass.AliasName; pFeatureLayer.FeatureClass = pFeatureClass; mapControlDefault.AddLayer(pFeatureLayer as ILayer, 0); } } }
/// <summary> /// 通过ICadDrawingDataset与ICadLayer获取cad /// </summary> /// <param name="mapControlDefault">地图控件</param> /// <param name="strPathWithoutFileName">文件所在文件夹路径</param> /// <param name="strFileName">文件名,包括后缀</param> public static void GetAllCADbyCADLayer(IMapControlDefault mapControlDefault, string strPathWithoutFileName, string strFileName) { ICadDrawingDataset cadDrawingDataset = GetCadDataset(strPathWithoutFileName, strFileName); if (cadDrawingDataset == null) return; ICadLayer cadLayer = new CadLayerClass(); cadLayer.CadDrawingDataset = cadDrawingDataset; cadLayer.Name = strFileName; ILayer mLayer = cadLayer as ILayer; mapControlDefault.AddLayer(mLayer, 0); }