mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Prepare for release
Always create plots using Qwt Always create plot for command "New Summary Plot" #9103 : Fix missing updates in multiselect field update operation Add Open Summary Plot Editor Trigger missing load of data Enable data source display for first realization of an ensemble Always show legend text Set version to 2022.06.0-RC-02
This commit is contained in:
@@ -93,10 +93,10 @@ void RicAppendSummaryPlotsForObjectsFeature::appendPlots( RimSummaryMultiPlot* s
|
||||
adrMod.setAddress( modifiedAdr );
|
||||
}
|
||||
summaryMultiPlot->addPlot( duplicatedPlot );
|
||||
|
||||
duplicatedPlot->resolveReferencesRecursively();
|
||||
duplicatedPlot->loadDataAndUpdate();
|
||||
}
|
||||
|
||||
duplicatedPlot->loadDataAndUpdate();
|
||||
}
|
||||
info.incrementProgress();
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "RicSummaryPlotBuilder.h"
|
||||
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
#include "RimSummaryMultiPlot.h"
|
||||
@@ -60,22 +61,30 @@ void RicNewSummaryMultiPlotFeature::onActionTriggered( bool isChecked )
|
||||
std::vector<caf::PdmUiItem*> selectedUiItems;
|
||||
caf::SelectionManager::instance()->selectedItems( selectedUiItems );
|
||||
|
||||
RimSummaryMultiPlotCollection* coll = selectedCollection( selectedUiItems );
|
||||
if ( coll )
|
||||
{
|
||||
std::vector<caf::PdmObjectHandle*> objects = {};
|
||||
RimSummaryMultiPlot* multiPlot = RicSummaryPlotBuilder::createAndAppendSummaryMultiPlot( objects );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<RimSummaryCase*> selectedIndividualSummaryCases;
|
||||
std::vector<RimSummaryCaseCollection*> selectedEnsembles;
|
||||
|
||||
if ( selectedCases( &selectedIndividualSummaryCases, &selectedEnsembles ) )
|
||||
RimSummaryMultiPlotCollection* coll = selectedCollection( selectedUiItems );
|
||||
if ( coll )
|
||||
{
|
||||
RicSummaryPlotBuilder::createAndAppendDefaultSummaryMultiPlot( selectedIndividualSummaryCases, selectedEnsembles );
|
||||
auto ensembles = RimProject::current()->summaryGroups();
|
||||
if ( !ensembles.empty() )
|
||||
selectedEnsembles.push_back( ensembles.front() );
|
||||
else
|
||||
{
|
||||
auto summaryCases = RimProject::current()->allSummaryCases();
|
||||
if ( !summaryCases.empty() ) selectedIndividualSummaryCases.push_back( summaryCases.front() );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
selectedCases( &selectedIndividualSummaryCases, &selectedEnsembles );
|
||||
}
|
||||
|
||||
bool skipCreationOfPlotBasedOnPreferences = false;
|
||||
RicSummaryPlotBuilder::createAndAppendDefaultSummaryMultiPlot( selectedIndividualSummaryCases,
|
||||
selectedEnsembles,
|
||||
skipCreationOfPlotBasedOnPreferences );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -410,11 +410,14 @@ void RicSummaryPlotBuilder::appendPlotsToMultiPlot( RimMultiPlot* multiPlot, con
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryMultiPlot*
|
||||
RicSummaryPlotBuilder::createAndAppendDefaultSummaryMultiPlot( const std::vector<RimSummaryCase*>& cases,
|
||||
const std::vector<RimSummaryCaseCollection*>& ensembles )
|
||||
const std::vector<RimSummaryCaseCollection*>& ensembles,
|
||||
bool skipCreationOfPlotBasedOnPreferences )
|
||||
{
|
||||
RiaPreferencesSummary* prefs = RiaPreferencesSummary::current();
|
||||
|
||||
if ( prefs->defaultSummaryPlotType() == RiaPreferencesSummary::DefaultSummaryPlotType::NONE ) return nullptr;
|
||||
if ( skipCreationOfPlotBasedOnPreferences &&
|
||||
prefs->defaultSummaryPlotType() == RiaPreferencesSummary::DefaultSummaryPlotType::NONE )
|
||||
return nullptr;
|
||||
|
||||
if ( prefs->defaultSummaryPlotType() == RiaPreferencesSummary::DefaultSummaryPlotType::PLOT_TEMPLATES )
|
||||
{
|
||||
@@ -424,10 +427,17 @@ RimSummaryMultiPlot*
|
||||
{
|
||||
plotToSelect = RicSummaryPlotTemplateTools::create( filename, cases, ensembles );
|
||||
}
|
||||
return plotToSelect;
|
||||
|
||||
if ( plotToSelect ) return plotToSelect;
|
||||
|
||||
if ( skipCreationOfPlotBasedOnPreferences )
|
||||
{
|
||||
return plotToSelect;
|
||||
}
|
||||
}
|
||||
|
||||
if ( prefs->defaultSummaryCurvesTextFilter().trimmed().isEmpty() ) return nullptr;
|
||||
if ( skipCreationOfPlotBasedOnPreferences && prefs->defaultSummaryCurvesTextFilter().trimmed().isEmpty() )
|
||||
return nullptr;
|
||||
|
||||
RimProject* project = RimProject::current();
|
||||
auto* plotCollection = project->mainPlotCollection()->summaryMultiPlotCollection();
|
||||
|
||||
@@ -77,7 +77,8 @@ public:
|
||||
|
||||
static RimSummaryMultiPlot*
|
||||
createAndAppendDefaultSummaryMultiPlot( const std::vector<RimSummaryCase*>& cases,
|
||||
const std::vector<RimSummaryCaseCollection*>& ensembles );
|
||||
const std::vector<RimSummaryCaseCollection*>& ensembles,
|
||||
bool skipCreationOfPlotBasedOnPreferences = true );
|
||||
|
||||
static RimSummaryMultiPlot* createAndAppendSingleSummaryMultiPlotNoAutoSettings( RimSummaryPlot* plot );
|
||||
static RimSummaryMultiPlot* createAndAppendSingleSummaryMultiPlot( RimSummaryPlot* plot );
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
set(SOURCE_GROUP_HEADER_FILES
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicOpenSummaryPlotEditorFeature.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicNewDefaultSummaryPlotFeature.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCrossPlotFeature.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCurveFeature.h
|
||||
@@ -46,6 +47,7 @@ set(SOURCE_GROUP_HEADER_FILES
|
||||
)
|
||||
|
||||
set(SOURCE_GROUP_SOURCE_FILES
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicOpenSummaryPlotEditorFeature.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicNewDefaultSummaryPlotFeature.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCrossPlotFeature.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCurveFeature.cpp
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2022 Equinor ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "RicOpenSummaryPlotEditorFeature.h"
|
||||
|
||||
#include "RiaSummaryTools.h"
|
||||
|
||||
#include "RicEditSummaryPlotFeature.h"
|
||||
#include "RicNewSummaryEnsembleCurveSetFeature.h"
|
||||
#include "RicSummaryPlotEditorDialog.h"
|
||||
#include "RicSummaryPlotEditorUi.h"
|
||||
#include "RicSummaryPlotFeatureImpl.h"
|
||||
|
||||
#include "RimCustomObjectiveFunctionCollection.h"
|
||||
#include "RimEnsembleCurveFilter.h"
|
||||
#include "RimEnsembleCurveFilterCollection.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimRegularLegendConfig.h"
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
#include "RimSummaryCaseMainCollection.h"
|
||||
#include "RimSummaryPlot.h"
|
||||
|
||||
#include "RiuPlotMainWindow.h"
|
||||
|
||||
#include "cafSelectionManagerTools.h"
|
||||
#include "cvfAssert.h"
|
||||
|
||||
#include <QAction>
|
||||
|
||||
CAF_CMD_SOURCE_INIT( RicOpenSummaryPlotEditorFeature, "RicOpenSummaryPlotEditorFeature" );
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicOpenSummaryPlotEditorFeature::isCommandEnabled()
|
||||
{
|
||||
RimSummaryMultiPlot* multiPlot = nullptr;
|
||||
RimCustomObjectiveFunctionCollection* customObjFuncCollection = nullptr;
|
||||
|
||||
caf::PdmObject* selObj = dynamic_cast<caf::PdmObject*>( caf::SelectionManager::instance()->selectedItem() );
|
||||
if ( selObj )
|
||||
{
|
||||
multiPlot = RiaSummaryTools::parentSummaryMultiPlot( selObj );
|
||||
selObj->firstAncestorOrThisOfType( customObjFuncCollection );
|
||||
}
|
||||
|
||||
auto ensembleFilter = dynamic_cast<RimEnsembleCurveFilter*>( selObj );
|
||||
auto ensembleFilterColl = dynamic_cast<RimEnsembleCurveFilterCollection*>( selObj );
|
||||
auto legendConfig = dynamic_cast<RimRegularLegendConfig*>( selObj );
|
||||
|
||||
if ( ensembleFilter || ensembleFilterColl || legendConfig || customObjFuncCollection ) return false;
|
||||
if ( multiPlot ) return true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicOpenSummaryPlotEditorFeature::onActionTriggered( bool isChecked )
|
||||
{
|
||||
RimProject* project = RimProject::current();
|
||||
CVF_ASSERT( project );
|
||||
|
||||
std::vector<RimSummaryCase*> selectedCases = caf::selectedObjectsByType<RimSummaryCase*>();
|
||||
std::vector<RimSummaryCaseCollection*> selectedGroups = caf::selectedObjectsByType<RimSummaryCaseCollection*>();
|
||||
|
||||
std::vector<caf::PdmObject*> sourcesToSelect( selectedCases.begin(), selectedCases.end() );
|
||||
|
||||
if ( sourcesToSelect.empty() && selectedGroups.empty() )
|
||||
{
|
||||
const auto allSingleCases = project->firstSummaryCaseMainCollection()->topLevelSummaryCases();
|
||||
const auto allGroups = project->summaryGroups();
|
||||
std::vector<RimSummaryCaseCollection*> allEnsembles;
|
||||
for ( const auto group : allGroups )
|
||||
if ( group->isEnsemble() ) allEnsembles.push_back( group );
|
||||
|
||||
if ( !allSingleCases.empty() )
|
||||
{
|
||||
sourcesToSelect.push_back( allSingleCases.front() );
|
||||
}
|
||||
else if ( !allEnsembles.empty() )
|
||||
{
|
||||
sourcesToSelect.push_back( allEnsembles.front() );
|
||||
}
|
||||
}
|
||||
|
||||
// Append grouped cases
|
||||
for ( auto group : selectedGroups )
|
||||
{
|
||||
if ( group->isEnsemble() )
|
||||
{
|
||||
sourcesToSelect.push_back( group );
|
||||
}
|
||||
else
|
||||
{
|
||||
auto groupCases = group->allSummaryCases();
|
||||
sourcesToSelect.insert( sourcesToSelect.end(), groupCases.begin(), groupCases.end() );
|
||||
}
|
||||
}
|
||||
|
||||
auto dialog = RicEditSummaryPlotFeature::curveCreatorDialog( true );
|
||||
|
||||
if ( !dialog->isVisible() )
|
||||
{
|
||||
dialog->show();
|
||||
}
|
||||
else
|
||||
{
|
||||
dialog->raise();
|
||||
}
|
||||
|
||||
dialog->updateFromDefaultCases( sourcesToSelect );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicOpenSummaryPlotEditorFeature::setupActionLook( QAction* actionToSetup )
|
||||
{
|
||||
actionToSetup->setText( "Open Summary Plot Editor" );
|
||||
actionToSetup->setIcon( QIcon( ":/SummaryPlotLight16x16.png" ) );
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2016- Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "RicfCommandObject.h"
|
||||
|
||||
#include "cafCmdFeature.h"
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
//==================================================================================================
|
||||
class RicOpenSummaryPlotEditorFeature : public caf::CmdFeature
|
||||
{
|
||||
CAF_CMD_HEADER_INIT;
|
||||
|
||||
protected:
|
||||
bool isCommandEnabled() override;
|
||||
void onActionTriggered( bool isChecked ) override;
|
||||
void setupActionLook( QAction* actionToSetup ) override;
|
||||
};
|
||||
@@ -50,6 +50,8 @@
|
||||
#include "RiuSummaryVectorSelectionUi.h"
|
||||
#include "RiuTools.h"
|
||||
|
||||
#include "PlotBuilderCommands/RicSummaryPlotBuilder.h"
|
||||
|
||||
#include "cafPdmUiComboBoxEditor.h"
|
||||
#include "cafPdmUiPushButtonEditor.h"
|
||||
|
||||
@@ -263,7 +265,7 @@ QList<caf::PdmOptionItemInfo> RicSummaryPlotEditorUi::calculateValueOptions( con
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> options;
|
||||
|
||||
if ( m_targetPlot && ( fieldNeedingOptions == &m_targetPlot ) )
|
||||
if ( fieldNeedingOptions == &m_targetPlot )
|
||||
{
|
||||
// Create New Plot item
|
||||
QString displayName = "( New Plot )";
|
||||
@@ -845,6 +847,12 @@ void RicSummaryPlotEditorUi::createNewPlot()
|
||||
|
||||
RimSummaryPlot* newSummaryPlot = nullptr;
|
||||
|
||||
if ( !m_plotContainer )
|
||||
{
|
||||
std::vector<RimSummaryPlot*> plots;
|
||||
m_plotContainer = RicSummaryPlotBuilder::createAndAppendSummaryMultiPlot( plots );
|
||||
}
|
||||
|
||||
if ( m_plotContainer )
|
||||
{
|
||||
newSummaryPlot = new RimSummaryPlot();
|
||||
|
||||
@@ -561,6 +561,7 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
|
||||
else if ( dynamic_cast<RimSummaryMultiPlotCollection*>( firstUiItem ) )
|
||||
{
|
||||
menuBuilder << "RicNewSummaryMultiPlotFeature";
|
||||
menuBuilder << "RicOpenSummaryPlotEditorFeature";
|
||||
menuBuilder << "Separator";
|
||||
menuBuilder << "RicPasteSummaryPlotFeature";
|
||||
menuBuilder << "RicPasteAsciiDataToSummaryPlotFeature";
|
||||
@@ -774,6 +775,7 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
|
||||
menuBuilder.addSeparator();
|
||||
menuBuilder << "RicNewSummaryMultiPlotFeature";
|
||||
menuBuilder << "RicNewDerivedEnsembleFeature";
|
||||
menuBuilder << "RicOpenSummaryPlotEditorFeature";
|
||||
menuBuilder << "RicNewSummaryCrossPlotFeature";
|
||||
menuBuilder.addSeparator();
|
||||
menuBuilder << "RicConvertGroupToEnsembleFeature";
|
||||
@@ -781,6 +783,9 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
|
||||
}
|
||||
else if ( dynamic_cast<RimSummaryCase*>( firstUiItem ) )
|
||||
{
|
||||
menuBuilder << "RicShowDataSourcesForRealization";
|
||||
menuBuilder.addSeparator();
|
||||
|
||||
menuBuilder.subMenuStart( "Import" );
|
||||
menuBuilder << "RicImportSummaryCaseFeature";
|
||||
menuBuilder << "RicImportSummaryCasesFeature";
|
||||
@@ -789,6 +794,7 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
|
||||
menuBuilder.subMenuEnd();
|
||||
menuBuilder.addSeparator();
|
||||
menuBuilder << "RicNewSummaryMultiPlotFeature";
|
||||
menuBuilder << "RicOpenSummaryPlotEditorFeature";
|
||||
menuBuilder << "RicNewSummaryCrossPlotFeature";
|
||||
menuBuilder << "RicAppendSummaryCurvesForSummaryCasesFeature";
|
||||
menuBuilder << "RicAppendSummaryPlotsForSummaryCasesFeature";
|
||||
@@ -1092,6 +1098,7 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
|
||||
|
||||
menuBuilder << "RicNewSummaryMultiPlotFeature";
|
||||
menuBuilder << "RicNewDerivedEnsembleFeature";
|
||||
menuBuilder << "RicOpenSummaryPlotEditorFeature";
|
||||
menuBuilder << "RicNewSummaryCrossPlotFeature";
|
||||
menuBuilder << "RicSummaryCurveSwitchAxisFeature";
|
||||
menuBuilder << "RicNewDerivedSummaryFeature";
|
||||
@@ -1110,7 +1117,6 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
|
||||
menuBuilder << "RicReloadSummaryCaseFeature";
|
||||
menuBuilder << "RicReplaceSummaryCaseFeature";
|
||||
menuBuilder << "RicCreateSummaryCaseCollectionFeature";
|
||||
menuBuilder << "RicShowDataSourcesForRealization";
|
||||
menuBuilder << "Separator";
|
||||
menuBuilder << "RicCutReferencesToClipboardFeature";
|
||||
|
||||
|
||||
@@ -184,6 +184,8 @@ void RimSummaryCaseCollection::addCase( RimSummaryCase* summaryCase )
|
||||
{
|
||||
summaryCase->nameChanged.connect( this, &RimSummaryCaseCollection::onCaseNameChanged );
|
||||
|
||||
if ( m_cases.empty() ) summaryCase->setShowRealizationDataSource( true );
|
||||
|
||||
m_cases.push_back( summaryCase );
|
||||
m_cachedSortedEnsembleParameters.clear();
|
||||
m_analyzer.reset();
|
||||
|
||||
@@ -1162,7 +1162,13 @@ void RimSummaryMultiPlot::summaryPlotItemInfos( QList<caf::PdmOptionItemInfo>* o
|
||||
{
|
||||
for ( RimSummaryPlot* plot : summaryPlots() )
|
||||
{
|
||||
QString displayName = plot->description();
|
||||
QString displayName;
|
||||
|
||||
if ( plot && plot->userDescriptionField() && plot->userDescriptionField() )
|
||||
{
|
||||
displayName = plot->userDescriptionField()->uiCapability()->uiValue().toString();
|
||||
}
|
||||
|
||||
optionInfos->push_back( caf::PdmOptionItemInfo( displayName, plot, false, plot->uiCapability()->uiIconProvider() ) );
|
||||
}
|
||||
}
|
||||
@@ -1217,8 +1223,6 @@ void RimSummaryMultiPlot::analyzePlotsAndAdjustAppearanceSettings()
|
||||
// Disable sub plot linking to be able to configure individually
|
||||
setSubPlotAxesLinked( false );
|
||||
|
||||
axisProp->setShowDescription( false );
|
||||
|
||||
auto [row, col] = gridLayoutInfoForSubPlot( p );
|
||||
if ( col == 0 )
|
||||
axisProp->setShowUnitText( true );
|
||||
|
||||
@@ -564,7 +564,8 @@ void RimSummaryPlot::updatePlotTitle()
|
||||
RimMultiPlot* plotWindow = nullptr;
|
||||
firstAncestorOrThisOfType( plotWindow );
|
||||
|
||||
auto index = plotWindow->plotIndex( this );
|
||||
size_t index = 0;
|
||||
if ( plotWindow ) index = plotWindow->plotIndex( this );
|
||||
|
||||
QString title = QString( "Sub Plot %1" ).arg( index + 1 );
|
||||
m_fallbackPlotName = title;
|
||||
@@ -2361,6 +2362,11 @@ RiuPlotWidget* RimSummaryPlot::doCreatePlotViewWidget( QWidget* mainWindowParent
|
||||
useQtCharts = true;
|
||||
}
|
||||
|
||||
// Disable all use of QtCharts for now. If a plot was created using QtCharts during the period this flag was
|
||||
// active, the use of QtCharts was stored in the project file or template file. Set flag to false to force use
|
||||
// of Qwt
|
||||
useQtCharts = false;
|
||||
|
||||
if ( useQtCharts )
|
||||
{
|
||||
m_summaryPlot = std::make_unique<RiuSummaryQtChartsPlot>( this, mainWindowParent );
|
||||
|
||||
@@ -62,6 +62,8 @@ RimSummaryPlotSourceStepping::RimSummaryPlotSourceStepping()
|
||||
{
|
||||
CAF_PDM_InitObject( "Summary Curves Modifier" );
|
||||
|
||||
setNotifyAllFieldsInMultiFieldChangedEvents( true );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_stepDimension, "StepDimension", "Step Dimension" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_summaryCase, "CurveCase", "Case" );
|
||||
|
||||
Reference in New Issue
Block a user