Ejemplo n.º 1
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() );

	}
}
Ejemplo n.º 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 );
  }

}
Ejemplo n.º 3
0
void TextLabel::write(Aircraft * airPtr, xmlNodePtr root)
{
	xmlAddStringNode( root, "Type", "TextLabel");

	writeLabelGeom(root);
	writeTextLabel(airPtr, root);

}
Ejemplo n.º 4
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 );
	}
}
Ejemplo n.º 5
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());
}
Ejemplo n.º 6
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 );
}
Ejemplo n.º 7
0
void UserGeom::write(xmlNodePtr root)
{
	xmlAddStringNode( root, "Type", "User");

	xmlNodePtr user_node = xmlNewChild( root, NULL, (const xmlChar *)"User_Parms", NULL );

	xmlAddDoubleNode( user_node, "User1", userParm1() );
	xmlAddDoubleNode( user_node, "User2", userParm2() );
	xmlAddDoubleNode( user_node, "User3", userParm3() );
	xmlAddDoubleNode( user_node, "User4", userParm4() );
	xmlAddDoubleNode( user_node, "User5", userParm5() );
	xmlAddDoubleNode( user_node, "User6", userParm6() );
	xmlAddDoubleNode( user_node, "User7", userParm7() );
	xmlAddDoubleNode( user_node, "User8", userParm8() );
}
Ejemplo n.º 8
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() );

}