|
阅读:1308回复:3
请帮我看看这个vc+mo的加载cad文件的代码,怎么错了呢?
<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> |
|
|
1楼#
发布于:2004-12-14 22:20
谢谢,好多天 没有来,万分谢谢了!
|
|
|
2楼#
发布于:2004-12-13 12:11
<img src="images/post/smile/dvbbs/em01.gif" />
|
|
|
|
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> |
|