mirror of
https://github.com/OpenVSP/OpenVSP.git
synced 2026-03-13 10:13:08 +08:00
75 lines
2.2 KiB
Plaintext
75 lines
2.2 KiB
Plaintext
|
|
|
|
//==== Init Is Called Once During Each Custom Geom Construction ============================//
|
|
//==== Avoid Global Variables Unless You Want Shared With All Custom Geoms of This Type =====//
|
|
void Init()
|
|
{
|
|
//==== OnOff Flag =====//
|
|
string onoff_flag = AddParm( PARM_BOOL_TYPE, "OnOffFlag", "Design" );
|
|
SetParmVal( onoff_flag, 0.0 );
|
|
|
|
//==== Set Some Decent Tess Vals ====//
|
|
string geom_id = GetCurrCustomGeom();
|
|
SetParmVal( GetParm( geom_id, "Tess_U", "Shape" ), 13 );
|
|
SetParmVal( GetParm( geom_id, "Tess_W", "Shape" ), 13 );
|
|
}
|
|
|
|
//==== InitGui Is Called Once During Each Custom Geom Construction ====//
|
|
void InitGui()
|
|
{
|
|
AddGui( GDEV_TAB, "Design" );
|
|
AddGui( GDEV_YGAP );
|
|
AddGui( GDEV_DIVIDER_BOX, "Test On/Off" );
|
|
AddGui( GDEV_TOGGLE_BUTTON, "On", "OnOffFlag", "Design" );
|
|
}
|
|
|
|
//==== UpdateGui Is Called Every Time The Gui is Updated - Use It To Deactivate/Show/Hide Gui ====//
|
|
void UpdateGui()
|
|
{
|
|
}
|
|
|
|
//==== UpdateSurf Is Called Every Time The Geom is Updated ====//
|
|
void UpdateSurf()
|
|
{
|
|
string geom_id = GetCurrCustomGeom();
|
|
|
|
//==== Check For Square Flag ====//
|
|
bool onoff_flag = GetBoolParmVal( GetParm( geom_id, "OnOffFlag", "Design" ) );
|
|
|
|
//==== Clear Old Surfs ====//
|
|
ClearXSecSurfs();
|
|
|
|
//==== Create XSec Surf And Build Box ====//
|
|
string xsec_surf = AddXSecSurf();
|
|
BuildObj( xsec_surf, 3, 1 );
|
|
|
|
//==== Check Flag And Create Second Object ====//
|
|
if ( onoff_flag )
|
|
{
|
|
string second_box = AddXSecSurf();
|
|
BuildObj( second_box, 3, 2 );
|
|
Matrix4d mat;
|
|
mat.translatef( 3.0, 0.0, 0.0 );
|
|
SetXSecSurfGlobalXForm( second_box, mat );
|
|
}
|
|
|
|
//==== Skin All Defined XSecSurf ====//
|
|
SkinXSecSurf();
|
|
|
|
}
|
|
|
|
void BuildObj( string surf_id, double length, double dia )
|
|
{
|
|
//==== Add Cross-Sectopms ====//
|
|
string xsec0 = AppendCustomXSec( surf_id, XS_POINT);
|
|
string xsec1 = AppendCustomXSec( surf_id, XS_CIRCLE );
|
|
string xsec2 = AppendCustomXSec( surf_id, XS_POINT);
|
|
|
|
//==== Define The Middle XSecs ====//
|
|
SetCustomXSecLoc( xsec1, vec3d( length/2, 0, 0 ) );
|
|
SetParmVal( GetXSecParm( xsec1, "Circle_Diameter" ), dia );
|
|
|
|
//==== Define The Last XSec Placement ====//
|
|
SetCustomXSecLoc( xsec2, vec3d( length, 0, 0 ) );
|
|
|
|
} |