我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網(wǎng)站首頁(yè) > CAD教程 > 常見問題

C#實(shí)現(xiàn)CAD數(shù)據(jù)轉(zhuǎn)shape或mdb

時(shí)間:2010-11-01 10:02:14 來(lái)源:未知

本文所指的CAD數(shù)據(jù)為不帶空間參考和擴(kuò)展數(shù)據(jù)的數(shù)據(jù)。如果CAD帶了空間參考或是擴(kuò)展屬性數(shù)據(jù)的話,就要采用圖形和屬性分離的方法轉(zhuǎn)CAD數(shù)據(jù),即圖形轉(zhuǎn)完后需要掛接屬性數(shù)據(jù)庫(kù)。這里就不詳細(xì)說(shuō)明了.

 

ArcGIS和CAD對(duì)空間數(shù)據(jù)的歸納有所不同,在AutoCad中,點(diǎn)線面可以在同一個(gè)圖層中,但是在ArcGIS中,點(diǎn)線面被嚴(yán)格的區(qū)分為了point、polyline和polygon三種類型的圖層,所以直接用ArcCatalog查看CAD數(shù)據(jù)時(shí)會(huì)看到五個(gè)圖層(點(diǎn)線面、注記和Multipatch)

 

話不多說(shuō)了,進(jìn)入主題吧

下面的方法實(shí)現(xiàn)了點(diǎn)線面圖層轉(zhuǎn)成Shape文件

 

代碼
 public bool CadDataToShape(string _cadFilePath)
 {        
            
//工作空間         
            IWorkspaceFactory pWorkspaceFactory;
            IFeatureWorkspace pFeatureWorkspace;
            IFeatureLayer pFeatureLayer;
            IFeatureDataset pFeatureDataset;
//圖層對(duì)應(yīng)數(shù)據(jù)集
            
            ESRI.ArcGIS.ConversionTools.FeatureClassToFeatureClass feaTofea 
= new FeatureClassToFeatureClass();
            ESRI.ArcGIS.Geoprocessor.Geoprocessor pGeoPro 
= new ESRI.ArcGIS.Geoprocessor.Geoprocessor();

            
try
            {
                
string strFullPath = _cadFilePath;
                
int index = strFullPath.LastIndexOf("\");
                
string filePath = strFullPath.Substring(0, index);
                
string fileName #p#分頁(yè)標(biāo)題#e#= strFullPath.Substring(index + 1);
                
string DataSaveFilePath=@"D:CADToShape";

                cadGISInfo 
= new stMdbInfo();
                cadGISInfo.mdbFeaturesName 
= new List<string>();
                cadGISInfo.mdbname 
= fileName;

                
//打開cad數(shù)據(jù)集
                pWorkspaceFactory = new CadWorkspaceFactoryClass();
                pFeatureWorkspace 
= (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);
                
                
                
if (Directory.Exists(DataSaveFilePath + @"\" + fileName))
                {                  
                    DirectoryInfo dirInfo 
= new DirectoryInfo(DataSaveFilePath + @"\" + fileName);
                    
foreach (FileInfo file in dirInfo.GetFiles())
                    {
                        file.Delete();
                    }
                   #p#分頁(yè)標(biāo)題#e#
                    Directory.Delete(DataSaveFilePath 
+ @"\" + fileName);
                }

                Directory.CreateDirectory(DataSaveFilePath 
+ @"\" + fileName);

                cadGISInfo.mdbfilepath 
= DataSaveFilePath + @"\" + fileName;

                
//打開一個(gè)要素集
                pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(fileName);

                IFeatureClassContainer pFeatureClassContainer 
= (IFeatureClassContainer)pFeatureDataset;
                
//對(duì)CAD文件中的要素進(jìn)行遍歷處理
                int count = pFeatureClassContainer.ClassCount;

                
for (int j = 0; j < pFeatureClassContainer.ClassCount; j++)
                {
                    IFeatureClass pFeatClass 
= pFeatureClassContainer.get_Class(j);
                    cadGISInfo.mdbFeaturesName.Add(pFeatClass.AliasName
+".shp");
                    
if (pFeatClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation || pFeatClass.FeatureType == esriFeatureType.esriFTAnnotation)
                    {#p#分頁(yè)標(biāo)題#e#

                    }
                    
else
                    {
                        feaTofea.in_features 
= strFullPath + @"\" + pFeatClass.AliasName;
                        feaTofea.out_path 
= DataSaveFilePath + @"\" + fileName;

                        feaTofea.out_feature_class 
= pFeatClass.AliasName;
                        feaTofea.out_name 
= pFeatClass.AliasName;
                        pGeoPro.Execute(feaTofea, 
null);
                    }
                }           
                
return true;
            }
            
catch
            {
                
return false;
            }
            
finally
            {
                pWorkspaceFactory 
= null;              
                pFeatureDataset 
= null;            
                pFeatureWorkspace 
= null;             
                GC.Collect();#p#分頁(yè)標(biāo)題#e#
            }

        }

 

 

下面的方法實(shí)現(xiàn)CAD數(shù)據(jù)轉(zhuǎn)成本地的Personal Geodatbase,同時(shí)實(shí)現(xiàn)了注記圖層的轉(zhuǎn)換

  

代碼
public bool CadDataToGeodatabase(string _cadFilePath)
        {     
            
//工作空間         
            IWorkspaceFactory pWorkspaceFactory;
            IFeatureWorkspace pFeatureWorkspace;
            IFeatureLayer pFeatureLayer;
            IFeatureDataset pFeatureDataset;
//圖層對(duì)應(yīng)數(shù)據(jù)集

            
//創(chuàng)建MDB工作空間
            IWorkspaceFactory pAccessWorkSpaceFactory;

            
//這個(gè)conversionTools不包含注記圖層的轉(zhuǎn)換
            ESRI.ArcGIS.ConversionTools.FeatureClassToFeatureClass feaTofea = new FeatureClassToFeatureClass();
            ESRI.ArcGIS.Geoprocessor.Geoprocessor pGeoPro 
= new ESRI.ArcGIS.Geoprocessor.Geoprocessor();
            
//ImportCADAnnotation功能,實(shí)現(xiàn)導(dǎo)入注記圖層
            ESRI.ArcGIS.ConversionTools.ImportCADAnnotation importCADAnno = new ImportCADAnnotation();
            
try
            {                #p#分頁(yè)標(biāo)題#e#
                    
string strFullPath = _cadFilePath;
                    
int index = strFullPath.LastIndexOf("\");
                    
string filePath = strFullPath.Substring(0, index);
                    
string fileName = strFullPath.Substring(index + 1);
                    
string DataSaveFilePath=@"D:CADToMDB";

                    cadGISInfo
= new stMdbInfo();
                    cadGISInfo.mdbFeaturesName 
= new List<string>();
                    cadGISInfo.mdbname 
= fileName;
                    
//打開cad數(shù)據(jù)集
                    pWorkspaceFactory = new CadWorkspaceFactoryClass();
                    pFeatureWorkspace 
= (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);

                    
//創(chuàng)建mdb(personal geodatabase)
                    pAccessWorkSpaceFactory = new AccessWorkspaceFactoryClass();
                    
if (File.Exists(DataSaveFilePath +#p#分頁(yè)標(biāo)題#e# @"\" + fileName + ".mdb"))
                    {
                        File.Delete(DataSaveFilePath 
+ @"\" + fileName + ".mdb");
                    }

                    cadGISInfo.mdbfilepath 
= DataSaveFilePath + @"\" + fileName + ".mdb";
                    
//ltMdbFilePath.Add(DataSaveFilePath + @"\" + fileName + ".mdb");

                    pAccessWorkSpaceFactory.Create(DataSaveFilePath, fileName 
+ ".mdb"null0);
                    
//打開一個(gè)要素集
                    pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(fileName);

                    IFeatureClassContainer pFeatureClassContainer 
= (IFeatureClassContainer)pFeatureDataset;
                    
//對(duì)CAD文件中的要素進(jìn)行遍歷處理
                    int count = pFeatureClassContainer.ClassCount;

                    
for (#p#分頁(yè)標(biāo)題#e#int j = 0; j < pFeatureClassContainer.ClassCount; j++)
                    {

                        IFeatureClass pFeatClass 
= pFeatureClassContainer.get_Class(j);
                        cadGISInfo.mdbFeaturesName.Add(pFeatClass.AliasName);
                        
if (pFeatClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation || pFeatClass.FeatureType == esriFeatureType.esriFTAnnotation)
                        {
                            pFeatureLayer 
= new CadAnnotationLayerClass();//注記圖層
                            importCADAnno.input_features = strFullPath + @"\" + pFeatClass.AliasName;
                            importCADAnno.output_featureclass 
= DataSaveFilePath + @"\" + fileName + ".mdb" + @"\" + pFeatClass.AliasName;
                            importCADAnno.reference_scale 
= 1000;
                            pGeoPro.Execute(importCADAnno, 
null);
                        }
                        #p#分頁(yè)標(biāo)題#e#
else
                        {
                            feaTofea.in_features 
= strFullPath + @"\" + pFeatClass.AliasName;
                            feaTofea.out_path 
= DataSaveFilePath + @"\" + fileName + ".mdb";

                            feaTofea.out_feature_class 
= pFeatClass.AliasName;
                            feaTofea.out_name 
= pFeatClass.AliasName;
                            pGeoPro.Execute(feaTofea, 
null);
                        }
                    }                 
                
return true;
            }
            
catch(Exception ex)
            {
                
return false;
            }
            
finally
            {                 
                GC.Collect();           
            }            
        }

 

 

從上面的代碼可以看出,實(shí)際C#調(diào)用了Geoprocessor 執(zhí)行了ConversionTools.FeatureClass to FeatureClass工具,這是不是有點(diǎn)像用arctoolbox中的功能!這里就可以擴(kuò)展用Geoprocessor 實(shí)現(xiàn)其他arctoolbox中能夠先實(shí)現(xiàn)的功能!#p#分頁(yè)標(biāo)題#e#

 

這里也可以將上面的方法里的參數(shù)改為多個(gè)cad數(shù)據(jù)路徑,實(shí)現(xiàn)批量轉(zhuǎn)數(shù)據(jù)!


我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

            欧美变态tickling挠脚心| 亚洲青青青在线视频| 一区在线观看视频| 欧美日韩久久不卡| 国产精品羞羞答答xxdd| 日韩精品五月天| 亚洲精品日日夜夜| 欧美激情在线一区二区| 99麻豆久久久国产精品免费优播| 日本女人一区二区三区| 一区二区三区免费网站| 国产精品女主播av| 亚洲精品一区二区三区四区高清| 欧美日韩一区二区三区在线| av在线一区二区| 国内精品伊人久久久久影院对白| 亚洲乱码国产乱码精品精的特点| 久久婷婷色综合| 日韩精品一区二区三区四区| 欧美日韩国产区一| 91免费看`日韩一区二区| 国产91丝袜在线18| 国内精品视频666| 激情小说亚洲一区| 久久电影网站中文字幕| 亚洲成人免费视| 国产精品免费aⅴ片在线观看| 欧美日本在线一区| 欧美人成免费网站| av在线不卡观看免费观看| 麻豆精品在线播放| 精品亚洲欧美一区| 国产精品一二三在| 奇米一区二区三区| 亚洲成人激情综合网| 国产精品看片你懂得| 国产欧美精品在线观看| 精品国内二区三区| 欧美在线视频不卡| 欧美日韩日本视频| 欧美午夜精品理论片a级按摩| 欧美日韩一区二区三区视频| 欧美性三三影院| 日韩一区二区在线观看| 国产亚洲欧美日韩日本| 成人欧美一区二区三区| 亚洲成av人片在线| 免费的国产精品| 国产成人免费在线| 色狠狠综合天天综合综合| 欧美日韩视频在线一区二区| 日韩欧美一区二区免费| 欧美激情综合五月色丁香小说| 中文字幕一区二区不卡| 亚洲成人中文在线| 韩国在线一区二区| 99国产欧美另类久久久精品| 欧美亚洲综合网| 日韩女优电影在线观看| 国产精品福利电影一区二区三区四区| 亚洲无线码一区二区三区| 日韩1区2区3区| 成人免费视频一区| 91精品欧美一区二区三区综合在| 久久久蜜臀国产一区二区| 一区二区视频在线| 狠狠色丁香九九婷婷综合五月| 色综合天天性综合| 亚洲精品一线二线三线| 一区二区三区欧美日韩| 国产九色sp调教91| 欧美精选在线播放| 最好看的中文字幕久久| 久久激情五月激情| 99精品久久免费看蜜臀剧情介绍| 日韩一区二区三区高清免费看看| 国产精品福利一区二区三区| 另类人妖一区二区av| 91成人看片片| 国产精品欧美极品| 免费观看在线色综合| 欧美在线免费播放| 国产精品久久久久久久久免费桃花| 日韩av中文字幕一区二区三区| 国产一区二区三区在线观看精品| 99精品视频在线观看| 日韩欧美一级二级三级久久久| 久久免费看少妇高潮| 日韩高清在线一区| 欧美三日本三级三级在线播放| 中文字幕精品在线不卡| 韩国一区二区在线观看| 欧美日韩一区二区不卡| 亚洲日本在线天堂| 成人18视频在线播放| 久久嫩草精品久久久精品一| 蜜桃久久av一区| 欧美精品1区2区3区| 亚洲国产中文字幕| 日本道色综合久久| 亚洲欧美电影院| 99re亚洲国产精品| 亚洲色图制服丝袜| 91最新地址在线播放| 中文字幕一区在线观看| 国产成人av电影在线播放| 精品国产3级a| 国产在线播放一区三区四| 精品久久99ma| 国产一区二区三区黄视频 | 国产毛片精品视频| 亚洲精品一线二线三线无人区| 国产精品国产三级国产有无不卡 | 国产精品国产自产拍高清av王其| 成人国产免费视频| 国产精品女主播av| 99在线精品视频| 一区二区视频免费在线观看| 欧美亚洲图片小说| 天天综合日日夜夜精品| 69堂精品视频| 九九精品一区二区| 国产婷婷色一区二区三区| 成人免费视频免费观看| 亚洲日本中文字幕区| 欧美影院午夜播放| 免费人成网站在线观看欧美高清| 日韩精品一区二区三区蜜臀| 国产真实乱子伦精品视频| 国产欧美精品一区| 色综合天天视频在线观看| 亚洲国产精品久久人人爱蜜臀| 欧美日本在线播放| 国产在线观看免费一区| 国产精品电影院| 欧美日韩在线播| 国产一区免费电影| 亚洲精品网站在线观看| 日韩一区国产二区欧美三区| 国产成人精品免费一区二区| 亚洲人成人一区二区在线观看| 欧美亚洲高清一区| 国产一区二区日韩精品| 国产亚洲一区二区在线观看| 日本大香伊一区二区三区| 六月丁香婷婷色狠狠久久| 国产精品毛片高清在线完整版| 欧美日韩在线亚洲一区蜜芽| 国产麻豆欧美日韩一区| 亚洲午夜精品一区二区三区他趣| 日韩精品在线网站| 91网址在线看| 国产乱色国产精品免费视频| 夜夜嗨av一区二区三区中文字幕| 精品久久久久久综合日本欧美| 色综合天天做天天爱| 国内欧美视频一区二区| 亚洲无线码一区二区三区| 欧美国产精品中文字幕| 91麻豆精品国产91久久久 | 久久综合九色综合久久久精品综合 | 亚洲va欧美va人人爽午夜| 久久老女人爱爱| 欧美日韩成人一区二区| 91蜜桃免费观看视频| 国产一区二区三区香蕉| 日本中文字幕一区| 亚洲伦理在线精品| 国产丝袜在线精品| 日韩欧美视频一区| 欧美午夜影院一区| 91亚洲大成网污www| 国产成人午夜精品5599| 久久精品二区亚洲w码| 亚洲日本va午夜在线影院| 久久精品视频免费观看| 欧美成人精品高清在线播放| 欧美日韩1234| 欧美系列一区二区| 色综合久久中文字幕| 成人白浆超碰人人人人| 国产精品影视天天线| 狠狠网亚洲精品| 久久不见久久见免费视频1| 性做久久久久久久久| 亚洲午夜免费视频| 亚洲在线免费播放| 亚洲一区在线观看免费观看电影高清| 国产精品不卡视频| 国产精品麻豆视频| 国产精品国产馆在线真实露脸| 欧美一区二区三区不卡| 日韩三级伦理片妻子的秘密按摩| 91精品国模一区二区三区| 在线成人免费观看| 日韩欧美色综合| 国产日韩亚洲欧美综合| 亚洲福利视频一区二区| 极品美女销魂一区二区三区免费| aaa亚洲精品|