riding
路人甲
路人甲
  • 注册日期2007-09-05
  • 发帖数8
  • QQ
  • 铜币100枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1493回复:1

ArcEngine读完CAD不能正确显示

楼主#
更多 发布于:2007-10-17 12:09
我用arc例子读进去一个CAD文件,结果显示出来不正确, 只有标著, 个别的方框,另一个问题显示的太小,用放大缩小后,放大和缩小怎么刚好相反?  打开的是dwg文件.<br>// 打开CAD文件<br><br>BOOL  ImportCadFile( const CString; strFilePath,const CString; strFileName ,CString; strErrorMsg , IMapPtr  ipMap)<br>{<br>    HRESULT hr;<br>    IWorkspaceFactoryPtr ipCadWKS;<br>    IWorkspacePtr        tempWorkSpace;<br>    CString strTemp;<br>    <br>    int nPos = strFilePath.Find( strFileName ); <br>    if( nPos>0 )<br>    {<br>        strTemp= strFilePath.Left( nPos );<br>    }<br>    else<br>    {<br>        strTemp= ".";<br>    }<br>    BSTR bstrCadPath =  strTemp.AllocSysString();<br>    BSTR bstrCadFilename =strFileName.AllocSysString();<br>    hr = ipCadWKS.CreateInstance( CLSID_CadWorkspaceFactory );<br>    if( FAILED( hr )  ){<br>         strErrorMsg = L"不能创建工作区对象!";<br>         return FALSE;<br>    }<br>    <br>    hr = ipCadWKS->OpenFromFile( bstrCadPath, NULL, ;tempWorkSpace );<br>    if( FAILED( hr )  ){<br>         strErrorMsg = L"不能打开CAD文件工作区!";<br>         return FALSE;<br>    }<br>    IFeatureWorkspacePtr ipWorkspace( tempWorkSpace );<br>    IFeatureClassPtr     ipFeatureClass;<br>    IFeatureLayerPtr     ipCadFeatureLayer;<br>    IFeatureDatasetPtr   ipFeatureDataset;<br>    hr = ipWorkspace->OpenFeatureDataset(  bstrCadFilename , ; ipFeatureDataset);<br>    if( FAILED( hr )  ){<br>         strErrorMsg = L"打开要素集失败!";<br>         return FALSE;<br>    }<br>    LONG lCount;<br>    BSTR aliasname;<br>    enum esriFeatureType featureType;<br>    IFeatureClassContainerPtr ipFeatureClassContainer( ipFeatureDataset );<br>    ipFeatureClassContainer->get_ClassCount(  ;lCount );<br>    for( int nIndex=0;nIndex< lCount;++nIndex )<br>    {<br>        hr = ipFeatureClassContainer->get_Class( nIndex, ;ipFeatureClass );<br>        if( FAILED( hr )  ){<br>             strErrorMsg = L"取要素对象失败!";<br>             return FALSE;<br>        }<br>        hr =ipFeatureClass->get_FeatureType( ;featureType );<br>        if( FAILED( hr )  ){<br>             strErrorMsg = L"取要素类型失败!";<br>             return FALSE;<br>        }<br>        if( featureType == esriFTCoverageAnnotation )<br>        {<br>             ipCadFeatureLayer.CreateInstance( CLSID_CadAnnotationLayer );<br>        }<br>        else<br>        {<br>            ipCadFeatureLayer.CreateInstance( CLSID_FeatureLayer );<br>        }<br>        ipFeatureClass->get_AliasName( ; aliasname );<br>        ipCadFeatureLayer->put_Name( aliasname );<br>        ipCadFeatureLayer->putref_FeatureClass( ipFeatureClass  );<br>        <br>        ipMap->AddLayer(  ipCadFeatureLayer );<br>    }<br><br>    ::SysFreeString( bstrCadPath );<br>    ::SysFreeString( bstrCadFilename);<br>     return TRUE;<br>}<br>//////////<br>//打开文件<br>CString strFilter = L"Auto CAD(*.dwg)|*.dwg|Auto CAD(*.dfx)|*.dxf||";<br>    CFileDialog  dlg( TRUE,0,0,4|2,(LPCTSTR)strFilter,NULL);<br>    TCHAR PathBuf[256];<br>    ::GetCurrentDirectory(  256, PathBuf );<br>    dlg.m_ofn.lpstrInitialDir = PathBuf;<br>    if( IDOK!= dlg.DoModal() )<br>    {<br>        return;<br>    }<br>    CString strMsg;<br>    if( FALSE ==  ImportCadFile(  dlg.GetPathName(), dlg.GetFileName() ,strMsg ,m_ipMap ) )<br>    {<br>        AfxMessageBox( strMsg ); <br>        return;<br>    }<br>    IActiveViewPtr ipActiveView(  m_ipMap );<br>    ipActiveView->Refresh();<br>    LONG  lCount = 0;<br>    m_ipMap->get_LayerCount( ;lCount  );<br>    ILayerPtr  pLayer;<br>    VARIANT_BOOL  bVisible = TRUE;<br>    for( int nIndex=0; nIndex< lCount;++nIndex)<br>    {<br>        m_ipMap->get_Layer( nIndex,  ;pLayer );<br>        pLayer->put_Visible(  bVisible );<br>    }<br>/////////////////////////////////<br>//放大<br>   IEnvelopePtr ipEnv;<br>    double xMin,yMin,xMax,yMax;<br>    IActiveViewPtr ipActiveView(  m_ipMap );<br>    ipActiveView->get_Extent( ;ipEnv  );<br>    ipEnv->Expand( 2,2, VARIANT_TRUE );<br>    ipActiveView->put_Extent( ipEnv  );<br>    ipActiveView->Refresh( );<br><br>
喜欢0 评分0
riding
路人甲
路人甲
  • 注册日期2007-09-05
  • 发帖数8
  • QQ
  • 铜币100枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-10-19 15:43
怎么每人回答呢?
举报 回复(0) 喜欢(0)     评分
游客

返回顶部