海妖
路人甲
路人甲
  • 注册日期2004-09-17
  • 发帖数5
  • QQ
  • 铜币174枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1308回复:3

请帮我看看这个vc+mo的加载cad文件的代码,怎么错了呢?

楼主#
更多 发布于:2004-12-10 20:36
<P>   CMoDataConnection conn;
   if (!conn.CreateDispatch(TEXT("MapObjects2.DataConnection")))
    throw "不能够创建数据连接";</P>
<P>   conn.SetDatabase(GetFileDirectory(str));
   if (!conn.Connect())
    throw "连接数据库不成功";</P>
<P>   // 添加cad图层
   CMoLayers layers(m_ctrlMo.GetLayers());</P>
<P>   CMoMapLayer layer;
   if (!layer.CreateDispatch(TEXT("MapObjects2.MapLayer")))
    throw "创建图层不成功";</P>
<P>   str=GetFileTitle(str)+".dxf";
   CMoGeoDataset geoDataset(conn.FindGeoDataset(str));
   layer.SetGeoDataset(geoDataset);
  
   layers.Add(layer);</P>
<P>为什么在 layer.SetGeoDataset(geoDataset)时有错误呢?是不是mo只支持R14的文件啊?</P>
喜欢0 评分0
海妖
路人甲
路人甲
  • 注册日期2004-09-17
  • 发帖数5
  • QQ
  • 铜币174枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-12-14 22:20
谢谢,好多天 没有来,万分谢谢了!
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
2楼#
发布于:2004-12-13 12:11
<img src="images/post/smile/dvbbs/em01.gif" />
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
sulin
路人甲
路人甲
  • 注册日期2003-07-28
  • 发帖数158
  • QQ
  • 铜币501枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-12-13 09:03
<P>请分层添加吧:</P><P>代码如下:</P><P>void CChildView::OnAddCadfile()
{
 // TOD Add your command handler code here
   CString filter(TEXT("CAD drawings (*.dwg,*.dxf) | *.dwg;*.dxf"));
   CFileDialog dlg(TRUE, TEXT("*.dwg,*.dxf"), TEXT(""), OFN_FILEMUSTEXIST, filter);
   CString dwgpath;
   CString filename;
   if (dlg.DoModal() == IDOK)
 {
        dwgpath = dlg.GetPathName();
        filename = dlg.GetFileName();
   }
   if(!dwgpath.IsEmpty())
   {
       CMoDataConnection conn;
    CMoGeoDataset   GDset;
    if (!conn.CreateDispatch(TEXT("MapObjects2.DataConnection")))
         throw "unable to create MapObjects2.DataConnection";
    CString path = dwgpath.Left(dwgpath.ReverseFind('\\'));
       CCADFileSelect caddlg;
        
    if(caddlg.DoModal() == IDOK)
    {
     //添加点图层
     if(caddlg.m_bCADPoint)
     {
     CString connpath = "[CADPoint]" + path;
           conn.SetDatabase(connpath);
           if (!conn.Connect())
           throw "unable to connect to database";</P><P>            // Add layer specified by path
           CMoLayers layers(m_map.GetLayers());
          CMoLayers m_elayers(m_pEagleDlg->m_map.GetLayers());
             CMoMapLayer layer;
           if (!layer.CreateDispatch(TEXT("MapObjects2.MapLayer")))
           throw "unable to create MapObjects2.MapLayer";
             CMoGeoDataset geoDataset(conn.FindGeoDataset(filename));
          layer.SetGeoDataset(geoDataset);
    CString pointname = filename + ".point";
    layer.SetName(pointname);
             layers.Add(layer);
             m_elayers.Add(layer);
             layer.SetVisible(TRUE);
          CMoSymbol sym =layer.GetSymbol();
          COLORREF color =sym.GetColor();
          m_pEagleDlg->SetGeoDatasetDirect(;layer,color);
             if (sym.GetSymbolType() == moFillSymbol)
    {
               sym.SetStyle(moSolidFill);
               sym.SetOutlineColor(moBlack);
    }
             m_pLegend->ReloadLegend();
     }
           //添加线图层
     if(caddlg.m_bCADLine)
     {
     CString connpath = "[CADLine]" + path;
           conn.SetDatabase(connpath);
           if (!conn.Connect())
           throw "unable to connect to database";</P><P>            // Add layer specified by path
            CMoLayers layers(m_map.GetLayers());
           CMoLayers m_elayers(m_pEagleDlg->m_map.GetLayers());
              CMoMapLayer layer;
            if (!layer.CreateDispatch(TEXT("MapObjects2.MapLayer")))
           throw "unable to create MapObjects2.MapLayer";
              CMoGeoDataset geoDataset(conn.FindGeoDataset(filename));
           layer.SetGeoDataset(geoDataset);
     CString linename = filename + ".line";
     layer.SetName(linename);
              layers.Add(layer);
              m_elayers.Add(layer);
              layer.SetVisible(TRUE);
           CMoSymbol sym =layer.GetSymbol();
           COLORREF color =sym.GetColor();
           m_pEagleDlg->SetGeoDatasetDirect(;layer,color);
              if (sym.GetSymbolType() == moFillSymbol)
     {
                sym.SetStyle(moSolidFill);
                sym.SetOutlineColor(moBlack);
     }
              m_pLegend->ReloadLegend();
     }
           //添加面图层
     if(caddlg.m_bCADPolygon)
     {
     CString connpath = "[CADArea]" + path;
           conn.SetDatabase(connpath);
           if (!conn.Connect())
           throw "unable to connect to database";</P><P>            // Add layer specified by path
           CMoLayers layers(m_map.GetLayers());
          CMoLayers m_elayers(m_pEagleDlg->m_map.GetLayers());
             CMoMapLayer layer;
           if (!layer.CreateDispatch(TEXT("MapObjects2.MapLayer")))
           throw "unable to create MapObjects2.MapLayer";
             CMoGeoDataset geoDataset(conn.FindGeoDataset(filename));
          layer.SetGeoDataset(geoDataset);
    CString polygonname = filename + ".polygon";
    layer.SetName(polygonname);
             layers.Add(layer);
             m_elayers.Add(layer);
             layer.SetVisible(TRUE);
          CMoSymbol sym =layer.GetSymbol();
          COLORREF color =sym.GetColor();
          m_pEagleDlg->SetGeoDatasetDirect(;layer,color);
             if (sym.GetSymbolType() == moFillSymbol)
    {
               sym.SetStyle(moSolidFill);
               sym.SetOutlineColor(moBlack);
    }
             m_pLegend->ReloadLegend();
     }
           //添加文字图层
     if(caddlg.m_bCADText)
     {
     CString connpath = "[CADText]" +path;
           conn.SetDatabase(connpath);
           if (!conn.Connect())
           throw "unable to connect to database";</P><P>            // Add layer specified by path
           CMoLayers layers(m_map.GetLayers());
          CMoLayers m_elayers(m_pEagleDlg->m_map.GetLayers());
             CMoMapLayer layer;
           if (!layer.CreateDispatch(TEXT("MapObjects2.MapLayer")))
           throw "unable to create MapObjects2.MapLayer";
             CMoGeoDataset geoDataset(conn.FindGeoDataset(filename));
          layer.SetGeoDataset(geoDataset);
    CString textname = filename + ".text";
    layer.SetName(textname);
             layers.Add(layer);
             m_elayers.Add(layer);
             layer.SetVisible(TRUE);
          CMoSymbol sym =layer.GetSymbol();
          COLORREF color =sym.GetColor();
          m_pEagleDlg->SetGeoDatasetDirect(;layer,color);
             if (sym.GetSymbolType() == moFillSymbol)
    {
               sym.SetStyle(moSolidFill);
               sym.SetOutlineColor(moBlack);
    }
             m_pLegend->ReloadLegend();
     }
    }
   }
  
}</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部