Example #1
0
//==== Write Fuse Cross Section File ====//
void FuselageXSec::write(xmlNodePtr root)
{
  xmlAddIntNode( root, "Num_Pnts", num_pnts);
  xmlAddDoubleNode( root, "Spine_Location", location() );
  xmlAddDoubleNode( root, "Y_Offset", y_offset());
  xmlAddDoubleNode( root, "Z_Offset", z_offset());

  //==== Profile Stuff ====//
  xmlAddDoubleNode( root, "Top_Tan_Ang",   topTanAng());
  xmlAddDoubleNode( root, "Top_Tan_Str_1", topTanStr1());
  xmlAddDoubleNode( root, "Top_Tan_Str_2", topTanStr2());

  xmlAddDoubleNode( root, "Bot_Tan_Ang",   botTanAng());
  xmlAddDoubleNode( root, "Bot_Tan_Str_1", botTanStr1());
  xmlAddDoubleNode( root, "Bot_Tan_Str_2", botTanStr2());

  xmlAddDoubleNode( root, "Left_Tan_Ang",   leftTanAng());
  xmlAddDoubleNode( root, "Left_Tan_Str_1", leftTanStr1());
  xmlAddDoubleNode( root, "Left_Tan_Str_2", leftTanStr2());

  xmlAddDoubleNode( root, "Right_Tan_Ang",   rightTanAng());
  xmlAddDoubleNode( root, "Right_Tan_Str_1", rightTanStr1());
  xmlAddDoubleNode( root, "Right_Tan_Str_2", rightTanStr2());

  xmlAddIntNode( root, "Num_Sect_Interp_1", numSectInterp1);
  xmlAddIntNode( root, "Num_Sect_Interp_2", numSectInterp2);

  xmlAddIntNode( root, "Top_Sym_Flag",  topSymFlag);
  xmlAddIntNode( root, "Side_Sym_Flag", sideSymFlag);

  write_parms( root );
}
Example #2
0
//==== Write External File ====//
void PropGeom::write(xmlNodePtr root)
{
  xmlAddStringNode( root, "Type", "Prop");

  //==== Write General Parms ====//
  xmlNodePtr gen_node = xmlNewChild( root, NULL, (const xmlChar *)"General_Parms", NULL );
  write_general_parms( gen_node );

  //==== Write Fuse Parms ====//
  xmlNodePtr prop_node = xmlNewChild( root, NULL, (const xmlChar *)"Prop_Parms", NULL );

  xmlAddIntNode( prop_node, "NumBlades", numBlades );
  xmlAddIntNode( prop_node, "SmoothFlag", smoothFlag );
  xmlAddIntNode( prop_node, "NumU", numU );
  xmlAddIntNode( prop_node, "NumW", numW );

  xmlAddDoubleNode( prop_node, "Diameter", diameter() );
  xmlAddDoubleNode( prop_node, "ConeAngle", cone_angle() );
  xmlAddDoubleNode( prop_node, "Pitch", pitch() );

  for ( int i = 0 ; i < (int)sectVec.size() ; i++ )
  {
	xmlNodePtr sect_node = xmlNewChild( prop_node, NULL, (const xmlChar *)"Sect_Parms", NULL );

	xmlAddDoubleNode( sect_node, "X_Off", sectVec[i].x_off() );
	xmlAddDoubleNode( sect_node, "Y_Off", sectVec[i].y_off() );
	xmlAddDoubleNode( sect_node, "Chord", sectVec[i].chord() );
	xmlAddDoubleNode( sect_node, "Twist", sectVec[i].twist() );

    xmlNodePtr af_node = xmlNewChild( sect_node, NULL, (const xmlChar *)"Airfoil", NULL );
    sectVec[i].foil->write( af_node );
  }

}
Example #3
0
void RulerLabel::writeRulerLabel(Aircraft * airPtr, xmlNodePtr root)
{
	xmlNodePtr ruler_node = xmlNewChild( root, NULL, (const xmlChar *)"Ruler_Parms", NULL );

	vertex2.write(airPtr, ruler_node, "Vertex2_Parms");
	xmlAddDoubleNode(ruler_node, "RulerOffset", rulerOffset);
	xmlAddIntNode(ruler_node, "AttachState", attachState);
	xmlAddIntNode(ruler_node, "XLock", xLock);
	xmlAddIntNode(ruler_node, "YLock", yLock);
	xmlAddIntNode(ruler_node, "ZLock", zLock);
	xmlAddDoubleNode(ruler_node, "RulerDistance", rulerDistance);
	xmlAddIntNode(ruler_node, "Precision", precision);
	xmlAddStringNode(ruler_node, "UnitString", unitString.get_char_star());
}
Example #4
0
void VirtGlWindow::writeFile(xmlNodePtr node)
{
	xmlAddDoubleNode( node, "Back_Img_Scale_W", backImgScaleW );
	xmlAddDoubleNode( node, "Back_Img_Scale_H", backImgScaleH );
	xmlAddDoubleNode( node, "Back_Img_Offset_X", backImgOffsetX );
	xmlAddDoubleNode( node, "Back_Img_Offset_Y", backImgOffsetY );	

	//==== Load Components Into XML Tree ====//
	xmlNodePtr user_view_list_node = xmlNewChild( node, NULL, (const xmlChar *)"User_View_List", NULL );

	for ( int i = 0 ; i < NUM_USER_VIEWS ; i++ )		
	{
		xmlNodePtr user_view_node = xmlNewChild( user_view_list_node, NULL, (const xmlChar *)"User_View", NULL );

		xmlAddIntNode( user_view_node, "Saved_User_View_Flag", savedUserViewFlag[i] );	
		if ( savedUserViewFlag[i] )
		{
			xmlAddDoubleNode( user_view_node, "Saved_Rot_Center_X", savedRotationCenters[i].x() );	
			xmlAddDoubleNode( user_view_node, "Saved_Rot_Center_Y", savedRotationCenters[i].y() );	
			xmlAddDoubleNode( user_view_node, "Saved_Rot_Center_Z", savedRotationCenters[i].z() );	

			xmlAddDoubleNode( user_view_node, "Track_Scale", savedTrackVec[i].get_scale() );	
			xmlAddDoubleNode( user_view_node, "Track_Trans_X", savedTrackVec[i].get_trans_x() );	
			xmlAddDoubleNode( user_view_node, "Track_Trans_Y", savedTrackVec[i].get_trans_y() );	
			xmlAddDoubleNode( user_view_node, "Track_Spin_Rot_X", savedTrackVec[i].get_rvec_x() );	
			xmlAddDoubleNode( user_view_node, "Track_Spin_Rot_Y", savedTrackVec[i].get_rvec_y() );	
			xmlAddDoubleNode( user_view_node, "Track_Spin_Rot_Z", savedTrackVec[i].get_rvec_z() );	
			xmlAddDoubleNode( user_view_node, "Track_Spin_Rot_W", savedTrackVec[i].get_rvec_w() );	
		}
	}
}
Example #5
0
void TextLabel::writeTextLabel(Aircraft * airPtr, xmlNodePtr root)
{
	xmlNodePtr text_node = xmlNewChild( root, NULL, (const xmlChar *)"Text_Parms", NULL );

	vertex1.write(airPtr, text_node, "Vertex1_Parms");
	xmlAddDoubleNode(text_node, "TextOffset", textOffset);
	xmlAddIntNode( text_node, "FixedLabelFlag", fixedLabelFlag );
	xmlAddDoubleNode( text_node, "FixedPosX", fixedPos[0] );
	xmlAddDoubleNode( text_node, "FixedPosY", fixedPos[1] );
}
Example #6
0
void ParmLinkMgr::WriteLinks( xmlNodePtr root )
{
	xmlNodePtr link_list_node = xmlNewChild( root, NULL, (const xmlChar *)"ParmLink_List", NULL );

	for ( int i = 0 ; i < (int)m_ParmLinkVec.size() ; i++ )
	{
		ParmLink* pl = m_ParmLinkVec[i];
		xmlNodePtr link_node = xmlNewChild( link_list_node, NULL, (const xmlChar *)"Link", NULL );
		xmlAddIntNode( link_node, "GeomA", ((Geom*)pl->GetParmA()->get_geom_base())->getPtrID() );
		xmlAddStringNode( link_node, "GroupA", pl->GetParmA()->get_group_name().get_char_star() );
		xmlAddStringNode( link_node, "ParmA",  pl->GetParmA()->get_name().get_char_star() );

		xmlAddIntNode( link_node, "GeomB", ((Geom*)pl->GetParmB()->get_geom_base())->getPtrID() );
		xmlAddStringNode( link_node, "GroupB", pl->GetParmB()->get_group_name().get_char_star() );
		xmlAddStringNode( link_node, "ParmB",  pl->GetParmB()->get_name().get_char_star() );

		xmlAddIntNode( link_node, "OffsetFlag", pl->GetOffsetFlag() );
		xmlAddDoubleNode( link_node, "Offset",  pl->GetOffset() );
		xmlAddIntNode( link_node, "ScaleFlag",  pl->GetScaleFlag() );
		xmlAddDoubleNode( link_node, "Scale",   pl->GetScale() );

		xmlAddIntNode( link_node, "LowerLimitFlag", pl->GetLowerLimitFlag() );
		xmlAddDoubleNode( link_node, "LowerLimit",  pl->GetLowerLimit() );
		xmlAddIntNode( link_node, "UpperLimitFlag", pl->GetUpperLimitFlag() );
		xmlAddDoubleNode( link_node, "UpperLimit",  pl->GetUpperLimit() );

	}
}
Example #7
0
void LabelGeom::writeLabelGeom(xmlNodePtr root)
{
  xmlNodePtr label_node = xmlNewChild( root, NULL, (const xmlChar *)"Label_Parms", NULL );
//  xmlAddIntNode( label_node, "TypeInt", type );
//  xmlAddStringNode( label_node, "TypeStr", type_str.get_char_star());
  xmlAddStringNode( label_node, "NameStr", name_str.get_char_star());

  xmlAddDoubleNode( label_node, "ColorR", color.x() );
  xmlAddDoubleNode( label_node, "ColorG", color.y() );
  xmlAddDoubleNode( label_node, "ColorB", color.z() );

  xmlAddIntNode( label_node, "DrawMode", drawMode );
  xmlAddDoubleNode( label_node, "TextSize", textSize );
  xmlAddDoubleNode( label_node, "ViewScale", viewScale );
}
Example #8
0
//==== Write Fuse Cross Section File ====//
void FuselageXSec::write_parms(xmlNodePtr root )
{
	xmlAddIntNode( root, "Type", xstype);

	xmlAddDoubleNode( root, "Height", height() );
	xmlAddDoubleNode( root, "Width",  width() );

	xmlAddDoubleNode( root, "Max_Width_Location", max_width_loc() );
	xmlAddDoubleNode( root, "Corner_Radius", corner_rad() );
	xmlAddDoubleNode( root, "Top_Tan_Angle", top_tan_angle() );
	xmlAddDoubleNode( root, "Bot_Tan_Angle", bot_tan_angle() );

	xmlAddDoubleNode( root, "Top_Tan_Strength",    top_str() );
	xmlAddDoubleNode( root, "Upper_Tan_Strength",  upp_str() );
	xmlAddDoubleNode( root, "Lower_Tan_Strength",  low_str() );
	xmlAddDoubleNode( root, "Bottom_Tan_Strength", bot_str() );

	if ( xstype == FXS_FROM_FILE )
	{
		vec3d pnt;
		Stringc ystr, zstr;
		char numstr[255];
		int num_pnts = file_crv.get_num_pnts();

		xmlAddStringNode( root, "File_Name", fileName );
		for ( int i = 0 ; i < file_crv.get_num_pnts() ; i++ )
		{
			pnt = file_crv.get_pnt( i );
			sprintf( numstr, "%lf,", pnt.y() );
			ystr.concatenate(numstr);
			sprintf( numstr, "%lf,", pnt.z() );
			zstr.concatenate(numstr);
		}
		ystr.concatenate("\0");
		zstr.concatenate("\0");

		xmlAddStringNode( root, "File_Y_Pnts", ystr );
		xmlAddStringNode( root, "File_Z_Pnts", zstr );
	}
	else if ( xstype == FXS_EDIT_CRV )
	{
		edit_crv.write( root );
	}
}
Example #9
0
void Af::write(xmlNodePtr node)
{
  int i;

  xmlAddIntNode( node, "Type", type);
  xmlAddIntNode( node, "Inverted_Flag", inverted_flag);

  xmlAddDoubleNode( node, "Camber", camber() );
  xmlAddDoubleNode( node, "Camber_Loc", camber_loc() );
  xmlAddDoubleNode( node, "Thickness",  thickness() );
  xmlAddDoubleNode( node, "Thickness_Loc",  thickness_loc() );

  xmlAddDoubleNode( node, "Radius_Le",  radius_le() );
  xmlAddDoubleNode( node, "Radius_Te",  radius_te() );

  xmlAddIntNode( node, "Six_Series",  sixser );
  xmlAddDoubleNode( node, "Ideal_Cl",  ideal_cl() );
  xmlAddDoubleNode( node, "A",  a() );

  if ( type == AIRFOIL_FILE )
  {
    xmlAddStringNode( node, "Name",  name() );
    xmlAddDoubleNode( node, "Original_AF_Thickness",  orig_af_thickness );
    xmlAddDoubleNode( node, "Radius_LE_Correction_Factor",  radius_le_correction_factor );
    xmlAddDoubleNode( node, "Radius_TE_Correction_Factor",  radius_te_correction_factor );

    vec3d pnt;
    Stringc upstr;
    char numstr[255];
    for (  i = 0 ; i < upper_curve.get_num_pnts() ; i++)
    {
      pnt = upper_curve.get_pnt(i);
      sprintf( numstr, "%lf, %lf,", pnt.x(), pnt.z() );
      upstr.concatenate(numstr);
    }
    upstr.concatenate("\0");

    xmlAddStringNode( node, "Upper_Pnts", upstr );

   Stringc lowstr;
    for (  i = 0 ; i < lower_curve.get_num_pnts() ; i++)
    {
      pnt = lower_curve.get_pnt(i);
      sprintf( numstr, "%lf, %lf,", pnt.x(), pnt.z() );
      lowstr.concatenate(numstr);
    }
    lowstr.concatenate("\0");

    xmlAddStringNode( node, "Lower_Pnts", lowstr );
  }

  xmlAddIntNode( node, "Slat_Flag",  slat_flag );
  xmlAddIntNode( node, "Slat_Shear_Flag",  slat_shear_flag );
  xmlAddDoubleNode( node, "Slat_Chord",  slat_chord() );
  xmlAddDoubleNode( node, "Slat_Angle",  slat_angle() );

  xmlAddIntNode( node, "Flap_Flag",  flap_flag );
  xmlAddIntNode( node, "Flap_Shear_Flag",  flap_shear_flag );
  xmlAddDoubleNode( node, "Flap_Chord",  flap_chord() );
  xmlAddDoubleNode( node, "Flap_Angle",  flap_angle() );

}