Now handling compilation both with and without ODB api

This commit is contained in:
Jacob Støren 2015-04-29 09:26:29 +02:00
parent 936d6553cf
commit a7e38bcda1
4 changed files with 90 additions and 33 deletions

View File

@ -28,6 +28,9 @@ include_directories(
${CMAKE_CURRENT_BINARY_DIR}
)
#############################################################################
# Defining all the source (and header) files
#############################################################################
# Use all h files in the subdirectories to make them available in the project
file( GLOB_RECURSE HEADER_FILES *.h )
@ -92,15 +95,28 @@ list( APPEND CPP_SOURCES
${CODE_SOURCE_FILES}
)
#############################################################################
# Sub-directory projects
#############################################################################
add_subdirectory(WellPathImportSsihub)
add_subdirectory(GeoMech/GeoMechDataModel)
set(RESINSIGHT_ODB_API_DIR "" CACHE PATH "Path tho the ODB api from Simulia")
add_subdirectory(GeoMech/OdbReader)
#
# Odb api
#
set(RESINSIGHT_ODB_API_DIR "" CACHE PATH "Path to the ODB api from Simulia")
if(NOT ${RESINSIGHT_ODB_API_DIR} EQUAL "")
add_definitions(-DUSE_ODB_API)
add_subdirectory(GeoMech/OdbReader)
SET(RESINSIGHT_USE_ODB_API 1)
endif()
#############################################################################
# Qt specifics: Moc, ui, resources
#############################################################################
# Define files for MOC-ing
set ( QT_MOC_HEADERS
Application/RiaApplication.h
@ -209,6 +225,10 @@ source_group( "UserInterface" FILES ${USER_INTERFACE_FILES} )
source_group( "SocketInterface" FILES ${SOCKET_INTERFACE_FILES} )
#############################################################################
# Set up the main executable with its source files
#############################################################################
# Default behaviour for a Qt application is a console application, resulting in a console window always being launced at startup
# The following statement is used to control this behaviour
# set_target_properties( MY_TARGET PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:WINDOWS")
@ -236,7 +256,11 @@ set( EXE_FILES
add_executable( ResInsight ${EXE_FILES} )
#############################################################################
# Application icon for MacOS X bundle
#############################################################################
if (APPLE)
add_custom_command (OUTPUT Resources/ResInsight.icns
COMMAND sips -s format icns ${CMAKE_CURRENT_SOURCE_DIR}/Resources/AppLogo48x48.png --out ${CMAKE_CURRENT_BINARY_DIR}/Resources/ResInsight.icns
@ -249,6 +273,10 @@ if (APPLE)
MACOSX_BUNDLE_ICON_FILE ${CMAKE_CURRENT_BINARY_DIR}/Resources/ResInsight.icns)
endif ()
#############################################################################
# Set up libraries and dependent projects to link with
#############################################################################
set( LINK_LIBRARIES
WellPathImportSsihub
@ -265,7 +293,6 @@ set( LINK_LIBRARIES
LibCore
RigGeoMechDataModel
RifOdbReader
ecl
ert_util
@ -285,13 +312,20 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
)
endif()
# Add the odb reader if we are compiling with odb support
IF (${RESINSIGHT_USE_ODB_API})
set ( LINK_LIBRARIES ${LINK_LIBRARIES} RifOdbReader)
ENDIF()
target_link_libraries( ResInsight ${LINK_LIBRARIES} ${EXTERNAL_LINK_LIBRARIES})
#############################################################################
# Copy Dlls on MSVC
#############################################################################
# Copy Dlls
# Copy Odb Dlls
if (MSVC)
if ((MSVC) AND (${RESINSIGHT_USE_ODB_API}))
# Find all the dlls
file (GLOB RI_ALL_ODB_DLLS ${RESINSIGHT_ODB_API_DIR}/lib/*.dll)
@ -309,12 +343,12 @@ if (MSVC)
"${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>")
endforeach()
endif(MSVC)
endif()
# Qt DLLs
if (MSVC)
# Qt DLLs
set (QTLIBLIST QtCore QtCored QtGui QtGuid QtOpenGl QtOpenGld QtNetwork QtNetworkd QtScript QtScriptd QtScriptTools QtScriptToolsd)
foreach (qtlib ${QTLIBLIST})
add_custom_command(TARGET ResInsight POST_BUILD

View File

@ -87,18 +87,21 @@ bool RimGeoMechCase::openGeoMechCase()
return false;
}
RiaPreferences* prefs = RiaApplication::instance()->preferences();
#ifdef USE_ODB_API
readerInterface = new RifOdbReader;
m_geoMechCaseData = new RigGeoMechCaseData;
if (!readerInterface->readFemParts(m_caseFileName().toStdString(), m_geoMechCaseData->femParts()))
if (readerInterface->readFemParts(m_caseFileName().toStdString(), m_geoMechCaseData->femParts()))
{
return false;
// Todo: Default Results stuff, if needed
return true;
}
#endif
// Todo: Default Results stuff, if needed
return true;
return false;
}

View File

@ -230,28 +230,40 @@ void RimGeoMechView::createDisplayModelAndRedraw()
{
if (m_viewer && m_geomechCase)
{
cvf::ref<cvf::Transform> scaleTransform = new cvf::Transform();
scaleTransform->setLocalTransform(cvf::Mat4d::IDENTITY);
cvf::ref<cvf::ModelBasicList> cvfModel = new cvf::ModelBasicList;
m_geoMechVizModel = new RivGeoMechPartMgr();
m_geoMechVizModel->clearAndSetReservoir(m_geomechCase->geoMechData(), this);
for (int femPartIdx = 0; femPartIdx < m_geomechCase->geoMechData()->femParts()->partCount(); ++femPartIdx)
int partCount = 0;
if (m_geomechCase->geoMechData() && m_geomechCase->geoMechData()->femParts())
{
cvf::ref<cvf::UByteArray> elmVisibility = m_geoMechVizModel->cellVisibility(femPartIdx);
m_geoMechVizModel->setTransform(scaleTransform.p());
RivElmVisibilityCalculator::computeAllVisible(elmVisibility.p(), m_geomechCase->geoMechData()->femParts()->part(femPartIdx));
m_geoMechVizModel->setCellVisibility(femPartIdx, elmVisibility.p());
partCount = m_geomechCase->geoMechData()->femParts()->partCount();
}
m_geoMechVizModel->appendGridPartsToModel(cvfModel.p());
cvf::ref<cvf::Scene> scene = new cvf::Scene;
scene->addModel(cvfModel.p());
scene->updateBoundingBoxesRecursive();
if (partCount >= 0)
{
cvf::ref<cvf::Transform> scaleTransform = new cvf::Transform();
scaleTransform->setLocalTransform(cvf::Mat4d::IDENTITY);
m_viewer->setMainScene(scene.p());
m_viewer->zoomAll();
m_viewer->update();
cvf::ref<cvf::ModelBasicList> cvfModel = new cvf::ModelBasicList;
m_geoMechVizModel = new RivGeoMechPartMgr();
m_geoMechVizModel->clearAndSetReservoir(m_geomechCase->geoMechData(), this);
for (int femPartIdx = 0; femPartIdx < partCount; ++femPartIdx)
{
cvf::ref<cvf::UByteArray> elmVisibility = m_geoMechVizModel->cellVisibility(femPartIdx);
m_geoMechVizModel->setTransform(scaleTransform.p());
RivElmVisibilityCalculator::computeAllVisible(elmVisibility.p(), m_geomechCase->geoMechData()->femParts()->part(femPartIdx));
m_geoMechVizModel->setCellVisibility(femPartIdx, elmVisibility.p());
}
m_geoMechVizModel->appendGridPartsToModel(cvfModel.p());
cvf::ref<cvf::Scene> scene = new cvf::Scene;
scene->addModel(cvfModel.p());
scene->updateBoundingBoxesRecursive();
m_viewer->setMainScene(scene.p());
m_viewer->zoomAll();
m_viewer->update();
}
}
RiuMainWindow::instance()->refreshAnimationActions();
}

View File

@ -386,8 +386,10 @@ void RiuMainWindow::createMenus()
importMenu->addAction(m_importInputEclipseFileAction);
importMenu->addAction(m_openMultipleEclipseCasesAction);
importMenu->addSeparator();
#ifdef USE_ODB_API
importMenu->addAction(m_importGeoMechCaseAction);
importMenu->addSeparator();
#endif
importMenu->addAction(m_importWellPathsFromFileAction);
importMenu->addAction(m_importWellPathsFromSSIHubAction);
@ -1045,6 +1047,10 @@ void RiuMainWindow::slotOpenRecentFile()
{
loadingSucceded = RiaApplication::instance()->openEclipseCaseFromFile(filename);
}
else if (filename.contains(".odb", Qt::CaseInsensitive) )
{
loadingSucceded = RiaApplication::instance()->openOdbCaseFromFile(filename);
}
if (loadingSucceded)
{
@ -2049,7 +2055,9 @@ void RiuMainWindow::appendActionsContextMenuForPdmObject(caf::PdmObject* pdmObje
}
else if (dynamic_cast<RimGeoMechModels*>(pdmObject))
{
#ifdef USE_ODB_API
menu->addAction(m_importGeoMechCaseAction);
#endif
}
}