打開cad文件的幾種方法
方法一、通過遍歷CAD數據集,依次加載中點線面注記等圖層,所加載的數據均為一個獨立的圖層。
IWorkspaceFactory pWorkspaceFactory;
IFeatureWorkspace pFeatureWorkspace;
IFeatureLayer pFeatureLayer;
IFeatureDataset pFeatureDataset;
//打開CAD數據集
pWorkspaceFactory = new CadWorkspaceFactoryClass
pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(directoryPath, 0);
//打開一個要素集
pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(fileName);
//IFeaturClassContainer可以管理IFeatureDataset中的每個要素類
IFeatureClassContainer pFeatureClassContainer = (IFeatureClassContainer)pFeatureDataset;
//對CAD文件中的要素進行遍歷處理
for (int i = 0; i < pFeatureClassContainer.ClassCount - 1; i++)
{
IFeatureClass pFeatureClass = pFeatureClassContainer.get_Class(i);
if (pFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation)
{
//如果是注記,則添加注記層
pFeatureLayer = new CadAnnotationLayerClass();
}
else//如果是點、線、面,則添加要素層
{
pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.Name = pFeatureClass.AliasName;
pFeatureLayer.FeatureClass = pFeatureClass;
this.axmc_Main.Map.AddLayer(pFeatureLayer);
this.axmc_Main.ActiveView.**();
}
}
方法二、直接打開CAD數據的點線面注記等要素類,所加載的數據均為一個獨立的圖層。
具體代碼如下:
//其實在Coverage文件的開發方式與Autocad方法類似,可以參考.
方法三、利用繪圖空間直接加載CAD數據集,加載后各類型數據作為一個圖層顯示。
IWorkspaceFactory pWorkspaceFactory = new CadWorkspaceFactoryClass
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(directoryPath, 0);
//--定義一個CAD畫圖空間,并把上邊打開的工作空間賦給它
ICadDrawingWorkspace pCadDrawingWorkspace = pWorkspace as ICadDrawingWorkspace;#p#分頁標題#e#
//--定義一個CAD的畫圖數據集,并且打開上邊指定的工作空間中一幅CAD圖
//--然后賦值給CAD數據集
ICadDrawingDataset pCadDrawingDataset = pCadDrawingWorkspace.OpenCadDrawingDataset(fileName);
//--通過ICadLayer類,把上邊得到的CAD數據局賦值給ICadLayer類對象的
//--CadDrawingDataset屬性
ICadLayer pCadLayer = new CadLayerClass();
pCadLayer.CadDrawingDataset = pCadDrawingDataset;
//--利用MapControl加載CAD層
this.axmc_Main.Map.AddLayer(pCadLayer);
this.axmc_Main.ActiveView.**();
方法四、也是遍歷CAD點線面,但是不用檢查數據類型是否為注記。
IWorkspaceFactory pWorkspaceFactory = new CadWorkspaceFactoryClass
IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(directoryPath, 0) as IFeatureWorkspace;
IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(fileName);
IFeatureClassContainer pFeatureClassContainer = (IFeatureClassContainer)pFeatureDataset;
for (int i = 0; i < pFeatureClassContainer.ClassCount - 1; i++)
{
IFeatureClass pFeatureClass = pFeatureClassContainer.get_Class(i);
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureClass;
//ICadLayer pCadLayer = new CadLayerClass();
//pCadLayer = pFeatureLayer as ICadLayer;
this.axmc_Main.Map.AddLayer(pFeatureLayer);
this.axmc_Main.ActiveView.**();
}
方法五、類似與方法三。
//Add passed file to MapControl
ICadDrawingDataset pCadDrawingDataset = GetCadDrawingDataset(directoryPath, fileName);
if (pCadDrawingDataset == null) return;
ICadLayer pCadLayer = new CadLayerClass();
pCadLayer.CadDrawingDataset = pCadDrawingDataset;
pCadLayer.Name = fileName;
this.axmc_Main.AddLayer(pCadLayer, 0);
/// <summary>
/// 獲取記錄集
/// </summary>
/// <param name="directoryPath"></param>
/// <param name="fileName"></param>
/// <returns></returns>
private ICadDrawingDataset GetCadDrawingDataset(string directoryPath, string fileName)
{
//Create a WorkspaceName object
IWorkspaceName pWorkspaceName = new WorkspaceNameClass();
pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory";
pWorkspaceName.PathName = directoryPath;
//Create a CadDrawingName object
IDatasetName pDatasetName = new CadDrawingNameClass();
pDatasetName.Name = fileName;
pDatasetName.WorkspaceName = pWorkspaceName;
//Open the CAD drawing
IName pName = (IName)pDatasetName;
return (ICadDrawingDataset)pName.Open();
相關文章
- 2021-09-08BIM技術叢書Revit軟件應用系列Autodesk Revit族詳解 [
- 2021-09-08全國專業技術人員計算機應用能力考試用書 AutoCAD2004
- 2021-09-08EXCEL在工作中的應用 制表、數據處理及宏應用PDF下載
- 2021-08-30從零開始AutoCAD 2014中文版機械制圖基礎培訓教程 [李
- 2021-08-30從零開始AutoCAD 2014中文版建筑制圖基礎培訓教程 [朱
- 2021-08-30電氣CAD實例教程AutoCAD 2010中文版 [左昉 等編著] 20
- 2021-08-30電影風暴2:Maya影像實拍與三維合成攻略PDF下載
- 2021-08-30高等院校藝術設計案例教程中文版AutoCAD 建筑設計案例
- 2021-08-29環境藝術制圖AutoCAD [徐幼光 編著] 2013年PDF下載
- 2021-08-29機械AutoCAD 項目教程 第3版 [繆希偉 主編] 2012年PDF