OpenVSP API Documentation 3.51.3
Loading...
Searching...
No Matches
Mode Functions

This group of API functions are used to manipulate Modes – a combination of Sets and Variable Presets Click here to return to the main page. More...

Functions

std::string vsp::CreateAndAddMode (const std::string &name, int normal_set, int degen_set)
int vsp::GetNumModes ()
std::vector< std::string > vsp::GetAllModes ()
void vsp::DelMode (const std::string &mid)
void vsp::DelAllModes ()
std::string vsp::GetModeName (const std::string &mid)
void vsp::SetModeName (const std::string &mid, const std::string &name)
void vsp::ShowOnlyMode (const std::string &mid)
void vsp::ModeAddGroupSetting (const std::string &mid, const std::string &gid, const std::string &sid)
std::string vsp::ModeGetGroup (const std::string &mid, int indx)
std::string vsp::ModeGetSetting (const std::string &mid, int indx)
std::vector< std::string > vsp::ModeGetAllGroups (const std::string &mid)
std::vector< std::string > vsp::ModeGetAllSettings (const std::string &mid)
void vsp::RemoveGroupSetting (const std::string &mid, int indx)
void vsp::RemoveAllGroupSettings (const std::string &mid)

Detailed Description

Function Documentation

◆ CreateAndAddMode()

std::string vsp::CreateAndAddMode ( const std::string & name,
int normal_set,
int degen_set )
extern

Create a Mode – a combination of Sets and Variable Presets

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
if ( mid1.length() == 0 || mid1 == "NONE" )
{
Print( "ERROR: CreateAndAddMode returned no id" );
__failure++;
}
@ ATTACH_TRANS_LMN
Definition APIDefines.h:85
@ SET_NONE
@ SET_FIRST_USER
@ SET_ALL
std::string AddGeom(const std::string &type, const std::string &parent=std::string())
void ModeAddGroupSetting(const std::string &mid, const std::string &gid, const std::string &sid)
std::string CreateAndAddMode(const std::string &name, int normal_set, int degen_set)
std::string FindParm(const std::string &parm_container_id, const std::string &parm_name, const std::string &group_name)
double SetParmVal(const std::string &parm_id, double val)
void SetSetName(int index, const std::string &name)
void SetSetFlag(const std::string &geom_id, int set_index, bool flag)
std::string AddVarPresetSetting(const std::string &group_id, const std::string &setting_name)
void SetVarPresetParmVal(const std::string &group_id, const std::string &setting_id, const std::string &parm_id, double parm_val)
std::string AddVarPresetGroup(const std::string &group_name)
void AddVarPresetParm(const std::string &group_id, const std::string &parm_id)
void SaveVarPresetParmVals(const std::string &group_id, const std::string &setting_id)
void Update(bool update_managers=true)
Parameters
[in]namestring Name for new Mode
[in]normal_setint Normal set for Mode
[in]degen_setint Degen set for Mode
Returns
string Mode ID for new Mode

◆ DelAllModes()

void vsp::DelAllModes ( )
extern

Delete all modes from the model.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
if ( GetNumModes() != 0 )
{
Print( "ERROR: DelAllModes left something behind" );
__failure++;
}
int GetNumModes()
void DelAllModes()

◆ DelMode()

void vsp::DelMode ( const std::string & mid)
extern

Delete a mode from the model.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
int num_before_del = GetNumModes();
DelMode( mid1 );
if ( GetNumModes() >= num_before_del )
{
Print( "ERROR: DelMode removed nothing" );
__failure++;
}
void DelMode(const std::string &mid)
Parameters
[in]midstring Mode ID of mode to delete

◆ GetAllModes()

std::vector< std::string > vsp::GetAllModes ( )
extern

Get all ModeID's in model.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
array<string> modids = GetAllModes();
if ( modids.length() == 0 )
{
Print( "ERROR: GetAllModes returned nothing" );
__failure++;
}
std::vector< std::string > GetAllModes()
Returns
array<string> array of Mode IDs

◆ GetModeName()

std::string vsp::GetModeName ( const std::string & mid)
extern

Apply Parm settings corresponding to a Mode.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
// Each Mode carries the pairings it was given, in order.
array<string> gids = ModeGetAllGroups( mid1 );
array<string> sids = ModeGetAllSettings( mid1 );
if ( gids.size() != 2 || gids[0] != gid || gids[1] != gid2 ||
sids.size() != 2 || sids[0] != sid1 || sids[1] != sid4 )
{
Print( "ERROR: the Mode did not record the pairings it was given" );
__failure++;
}
if ( ModeGetAllGroups( mid2 ).size() != 2 )
{
Print( "ERROR: the second Mode did not record its pairings" );
__failure++;
}
// ThinAero carries the Fine tessellation and the LongThin design, so
// applying it has to drive all four Parms to those stored values.
if ( !closeTo( GetParmVal( p1 ), 35, 1e-9 ) || !closeTo( GetParmVal( p2 ), 21, 1e-9 ) )
{
Print( "ERROR: the tessellation group was not applied" );
__failure++;
}
if ( !closeTo( GetParmVal( p3 ), 20.0, 1e-9 ) || !closeTo( GetParmVal( p4 ), 35.0, 1e-9 ) )
{
Print( "ERROR: the design group was not applied" );
__failure++;
}
// The other Mode holds different values, so switching has to move them.
ApplyModeSettings( mid1 );
if ( !closeTo( GetParmVal( p1 ), 3, 1e-9 ) || !closeTo( GetParmVal( p3 ), 3.0, 1e-9 ) )
{
Print( "ERROR: switching Modes did not change the Parms" );
__failure++;
}
std::vector< std::string > ModeGetAllSettings(const std::string &mid)
std::vector< std::string > ModeGetAllGroups(const std::string &mid)
double GetParmVal(const std::string &parm_id)
Parameters
[in]midstring Mode ID of mode to apply

Get the name of a Mode.

string mid = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
if ( GetModeName( mid ) != "FatWetAreas" )
{
Print( "ERROR: GetModeName did not report the name the Mode was created with" );
__failure++;
}
// A Mode that does not exist has to be rejected.
GetModeName( "NOSUCHMODE" );
if ( GetNumTotalErrors() == 0 )
{
Print( "ERROR: GetModeName accepted a bad Mode ID" );
__failure++;
}
// That error was raised deliberately, so take it back off the queue.
while ( GetNumTotalErrors() > 0 )
{
ErrorObj err = PopLastError();
}
std::string GetModeName(const std::string &mid)
See also
CreateAndAddMode, SetModeName
Parameters
[in]midstring Mode ID
Returns
string Mode name

◆ GetNumModes()

int vsp::GetNumModes ( )
extern

Get number of Modes in model.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
int nmod = GetNumModes();
if ( nmod != 2 )
{
Print( "ERROR: GetNumModes, two were created" );
__failure++;
}
Returns
int Number of Modes in model.

◆ ModeAddGroupSetting()

void vsp::ModeAddGroupSetting ( const std::string & mid,
const std::string & gid,
const std::string & sid )
extern

Add a variable preset group and setting to a mode.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
// Each Mode carries the pairings it was given, in order.
array<string> gids = ModeGetAllGroups( mid1 );
array<string> sids = ModeGetAllSettings( mid1 );
if ( gids.size() != 2 || gids[0] != gid || gids[1] != gid2 ||
sids.size() != 2 || sids[0] != sid1 || sids[1] != sid4 )
{
Print( "ERROR: the Mode did not record the pairings it was given" );
__failure++;
}
if ( ModeGetAllGroups( mid2 ).size() != 2 )
{
Print( "ERROR: the second Mode did not record its pairings" );
__failure++;
}
// ThinAero carries the Fine tessellation and the LongThin design, so
// applying it has to drive all four Parms to those stored values.
if ( !closeTo( GetParmVal( p1 ), 35, 1e-9 ) || !closeTo( GetParmVal( p2 ), 21, 1e-9 ) )
{
Print( "ERROR: the tessellation group was not applied" );
__failure++;
}
if ( !closeTo( GetParmVal( p3 ), 20.0, 1e-9 ) || !closeTo( GetParmVal( p4 ), 35.0, 1e-9 ) )
{
Print( "ERROR: the design group was not applied" );
__failure++;
}
// The other Mode holds different values, so switching has to move them.
ApplyModeSettings( mid1 );
if ( !closeTo( GetParmVal( p1 ), 3, 1e-9 ) || !closeTo( GetParmVal( p3 ), 3.0, 1e-9 ) )
{
Print( "ERROR: switching Modes did not change the Parms" );
__failure++;
}
Parameters
[in]midstring Mode ID to add variable preset to
[in]gidstring Variable preset group ID to add to mode
[in]sidstring Variable preset setting ID to add to mode

◆ ModeGetAllGroups()

std::vector< std::string > vsp::ModeGetAllGroups ( const std::string & mid)
extern

Get all var preset group IDs in model.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
array<string> gids = ModeGetAllGroups( mid1 );
// Two group settings were added to this Mode, in this order.
if ( gids.size() != 2 || gids[0] != gid || gids[1] != gid2 )
{
Print( "ERROR: ModeGetAllGroups did not report the groups that were added" );
__failure++;
}
// The groups and the settings line up one for one.
if ( gids.size() != ModeGetAllSettings( mid1 ).size() )
{
Print( "ERROR: ModeGetAllGroups disagrees with ModeGetAllSettings" );
__failure++;
}
Parameters
[in]midstring Mode ID to return all group IDs
Returns
array<string> array of Group IDs

◆ ModeGetAllSettings()

std::vector< std::string > vsp::ModeGetAllSettings ( const std::string & mid)
extern

Get all var preset setting IDs in model.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
array<string> sids = ModeGetAllSettings( mid1 );
// The settings come back paired with the groups they were added under.
if ( sids.size() != 2 || sids[0] != sid1 || sids[1] != sid4 )
{
Print( "ERROR: ModeGetAllSettings did not report the settings that were added" );
__failure++;
}
Parameters
[in]midstring Mode ID to return all group IDs
Returns
array<string> array of Group IDs

◆ ModeGetGroup()

std::string vsp::ModeGetGroup ( const std::string & mid,
int indx )
extern

Get the group ID of var preset indx from a mode.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
string gid3 = ModeGetGroup( mid1, 0 );
if ( gid3.length() == 0 )
{
Print( "ERROR: ModeGetGroup returned no id" );
__failure++;
}
std::string ModeGetGroup(const std::string &mid, int indx)
Parameters
[in]midstring Mode ID to return GroupID
[in]indxint Index of Variable preset to return GroupID
Returns
string Group ID for Mode Variable preset indx

◆ ModeGetSetting()

std::string vsp::ModeGetSetting ( const std::string & mid,
int indx )
extern

Get the setting ID of var preset indx from a mode.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
string sid6 = ModeGetSetting( mid1, 0 );
if ( sid6.length() == 0 )
{
Print( "ERROR: ModeGetSetting returned no id" );
__failure++;
}
std::string ModeGetSetting(const std::string &mid, int indx)
Parameters
[in]midstring Mode ID to return settingID
[in]indxint Index of Variable preset to return SettingID
Returns
string Setting ID for Mode Variable preset indx

◆ RemoveAllGroupSettings()

void vsp::RemoveAllGroupSettings ( const std::string & mid)
extern

Remove all variable preset groups and settings from mode.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
// Every pairing on this Mode goes, and the other Mode is left alone.
if ( ModeGetAllGroups( mid1 ).size() != 0 || ModeGetAllSettings( mid1 ).size() != 0 )
{
Print( "ERROR: RemoveAllGroupSettings left pairings behind" );
__failure++;
}
if ( ModeGetAllGroups( mid2 ).size() != 2 )
{
Print( "ERROR: RemoveAllGroupSettings reached the other Mode" );
__failure++;
}
void RemoveAllGroupSettings(const std::string &mid)
Parameters
[in]midstring Mode ID to remove all variable presets from

◆ RemoveGroupSetting()

void vsp::RemoveGroupSetting ( const std::string & mid,
int indx )
extern

Remove the indx'th variable preset group and setting from the specified mode.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
RemoveGroupSetting( mid1, 0 );
// Only the indexed pairing goes; the other one stays and slides down.
array<string> gids = ModeGetAllGroups( mid1 );
array<string> sids = ModeGetAllSettings( mid1 );
if ( gids.size() != 1 || gids[0] != gid2 || sids.size() != 1 || sids[0] != sid4 )
{
Print( "ERROR: RemoveGroupSetting removed the wrong pairing" );
__failure++;
}
void RemoveGroupSetting(const std::string &mid, int indx)
Parameters
[in]midstring Mode ID to remove varible preset group and setting from
[in]indxint Index of Variable preset to remove

◆ SetModeName()

void vsp::SetModeName ( const std::string & mid,
const std::string & name )
extern

Set the name of a Mode.

string mid = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
SetModeName( mid, "RenamedMode" );
if ( GetModeName( mid ) != "RenamedMode" )
{
Print( "ERROR: SetModeName did not take" );
__failure++;
}
// Renaming one Mode leaves the others alone.
string mid2 = CreateAndAddMode( "ThinAero", SET_ALL, SET_NONE );
SetModeName( mid, "RenamedAgain" );
if ( GetModeName( mid2 ) != "ThinAero" )
{
Print( "ERROR: renaming one Mode disturbed another" );
__failure++;
}
void SetModeName(const std::string &mid, const std::string &name)
See also
CreateAndAddMode, GetModeName
Parameters
[in]midstring Mode ID
[in]namestring Mode name

◆ ShowOnlyMode()

void vsp::ShowOnlyMode ( const std::string & mid)
extern

Show-only a mode in a model.

// Illustrating use of Modes requires substantial setup of the model including components, sets, and variable presets.
//
// Setup boiler plate.
string pod1 = AddGeom( "POD", "" );
string wing = AddGeom( "WING", pod1 );
SetParmVal( wing, "Trans_Attach_Flag", "Attach", ATTACH_TRANS_LMN );
SetParmVal( wing, "L_Attach_Location", "Attach", 0.35 );
SetSetName( SET_FIRST_USER, "NonLifting" );
SetSetName( SET_FIRST_USER + 1, "Lifting" );
SetSetFlag( pod1, SET_FIRST_USER, true );
SetSetFlag( wing, SET_FIRST_USER + 1, true );
string gid = AddVarPresetGroup( "Tess" );
string p1 = FindParm( pod1, "Tess_U", "Shape" );
AddVarPresetParm( gid, p1 );
string p2 = FindParm( pod1, "Tess_W", "Shape" );
AddVarPresetParm( gid, p2 );
string sid = AddVarPresetSetting( gid, "Default" );
string sid1 = AddVarPresetSetting( gid, "Coarse" );
SetVarPresetParmVal( gid, sid1, p1, 3 );
SetVarPresetParmVal( gid, sid1, p2, 5 );
string sid2 = AddVarPresetSetting( gid, "Fine" );
SetVarPresetParmVal( gid, sid2, p1, 35 );
SetVarPresetParmVal( gid, sid2, p2, 21 );
string gid2 = AddVarPresetGroup( "Design" );
string p3 = FindParm( pod1, "Length", "Design" );
AddVarPresetParm( gid2, p3 );
string p4 = FindParm( pod1, "FineRatio", "Design" );
AddVarPresetParm( gid2, p4 );
string sid3 = AddVarPresetSetting( gid2, "Normal" );
SaveVarPresetParmVals( gid2, sid3 );
string sid4 = AddVarPresetSetting( gid2, "ShortFat" );
SetVarPresetParmVal( gid2, sid4, p3, 3.0 );
SetVarPresetParmVal( gid2, sid4, p4, 5.0 );
string sid5 = AddVarPresetSetting( gid2, "LongThin" );
SetVarPresetParmVal( gid2, sid5, p3, 20.0 );
SetVarPresetParmVal( gid2, sid5, p4, 35.0 );
// End of setup boiler plate.
string mid1 = CreateAndAddMode( "FatWetAreas", SET_ALL, SET_NONE );
ModeAddGroupSetting( mid1, gid, sid1 );
ModeAddGroupSetting( mid1, gid2, sid4 );
string mid2 = CreateAndAddMode( "ThinAero", SET_FIRST_USER, SET_FIRST_USER + 1 );
ModeAddGroupSetting( mid2, gid, sid2 );
ModeAddGroupSetting( mid2, gid2, sid5 );
ApplyModeSettings( mid2 );
ShowOnlyMode( mid1 );
// FatWetAreas uses SET_ALL as its normal set, so both Geoms end up shown.
if ( !GetSetFlag( pod1, SET_SHOWN ) || !GetSetFlag( wing, SET_SHOWN ) )
{
Print( "ERROR: ShowOnlyMode did not show the Mode's set" );
__failure++;
}
// A Mode that does not exist has to be rejected.
ShowOnlyMode( "NOSUCHMODE" );
if ( GetNumTotalErrors() == 0 )
{
Print( "ERROR: ShowOnlyMode accepted a bad Mode ID" );
__failure++;
}
// That error was raised deliberately, so take it back off the queue.
while ( GetNumTotalErrors() > 0 )
{
ErrorObj err = PopLastError();
}
@ SET_SHOWN
void ShowOnlyMode(const std::string &mid)
bool GetSetFlag(const std::string &geom_id, int set_index)
Parameters
[in]midstring Mode ID of mode to show-only