///////////////////////////////////////////////////////////////////////////////// // // This file is part of SACAMOS, cable models for EMI simulations in SPICE. // It was developed by the University of Nottingham and the Netherlands Aerospace // Centre (NLR) for ESA under contract number 4000112765/14/NL/HK. // // Copyright (C) 2015 - 2018 University of Nottingham // // SACAMOS 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. // // SACAMOS 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 // for more details. // // A copy of the GNU General Public License version 3 can be found in the // file GNU_GPL_v3 in the root or at . // // wxWidgets is currently licenced under the "wxWindows Library Licence". // A copy of the wxWindows Library Licence, Version 3.1 can be found in the file // wxWindows_Library_Licence_v3-1 in the root or at: // // // The University of Nottingham can be contacted at: ggiemr@nottingham.ac.uk // // File Contents: // // NAME // CABLE_SCHEMATIC.cpp // // DESCRIPTION // Functions to render cables - arguements: cable type and cable centre coordinates // // AUTHOR(S) // Steve Greedy // ///////////////////////////////////////////////////////////////////////////////// #include "CABLE_SCHEMATIC.h" void draw_cable(wxPanel *Panel, wxString cable_to_draw, float x_coord, float y_coord) { int size_h, size_v; Panel->GetSize(&size_h, &size_v ); wxClientDC dc(Panel); dc.Clear(); // Draw centre lines dc.SetPen( wxPen( wxColor(224,224,224),1 , wxDOT_DASH) ); dc.DrawLine( 0, size_v/2, size_h,size_v/2 ); dc.DrawLine( size_h/2, 0, size_h/2, size_v); dc.SetTextForeground(*wxBLACK); dc.DrawText("y=0", 5, (size_v/2)-15); dc.DrawText("x=0", (size_h/2)+5, size_v-20); // Draw ordinates dc.SetPen( wxPen( wxColor(255,0,0),1 ) ); dc.DrawCircle( wxPoint(5,size_v-10), 5 ); dc.DrawLine( 5, size_v-10, 30, size_v-10 ); dc.DrawLine( 5, size_v-10, 5, size_v-35); dc.DrawText("y", 10, size_v-45); dc.DrawText("x", 30, size_v-25); std::ifstream cableFile; cableFile.open (cable_to_draw); if (cableFile.fail()){ wxMessageBox(cable_to_draw , _("Failed to Open Cable Specification")); } std::string str; std::getline(cableFile, str); std::getline(cableFile, str); std::getline(cableFile, str); if (str.compare("Cylindrical") == 0 ){ dc.SetTextForeground(*wxBLUE); wxString mystring1(str); dc.DrawText(mystring1, 10, 15); std::getline(cableFile, str); std::getline(cableFile, str); float conductor_radius, dielectric_radius; cableFile >> conductor_radius; std::getline(cableFile, str); //Read to end of line cableFile >> dielectric_radius; wxString mystring2; mystring2 << dielectric_radius; dc.DrawText ("Dielectric Radius (m):", 10, 40); dc.DrawText(mystring2, 10, 55); wxString mystring3; mystring3 << conductor_radius; dc.DrawText ("Conductor Radius (m):", 10, 75); dc.DrawText(mystring3, 10, 90); float scaleFactor, dielectric_Scaledradius,conductor_Scaledradius; scaleFactor = (size_h * 0.25); dielectric_Scaledradius = (dielectric_radius/dielectric_radius)*scaleFactor; conductor_Scaledradius = (conductor_radius/dielectric_radius)*scaleFactor; dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), conductor_Scaledradius ); } if (str.compare("Coax") == 0 ){ dc.SetTextForeground(*wxBLUE); wxString mystring1(str); dc.DrawText(mystring1, 10, 15); std::getline(cableFile, str); std::getline(cableFile, str); float inner_conductor_radius, shield_radius, outer_insulation, shield_thickness; cableFile >> inner_conductor_radius; std::getline(cableFile, str); //Read to end of line cableFile >> shield_radius; std::getline(cableFile, str); //Read to end of line cableFile >> outer_insulation; std::getline(cableFile, str); //Read to end of line std::getline(cableFile, str); //Read to end of line cableFile >> shield_thickness; wxString mystring2; mystring2 << outer_insulation; dc.DrawText ("Outer Dielectric Radius (m):", 10, 40); dc.DrawText(mystring2, 10, 55); wxString mystring3; mystring3 << shield_thickness; dc.DrawText ("Shield Thickness (m):", 10, 75); dc.DrawText(mystring3, 10, 90); wxString mystring4; mystring4 << shield_radius; dc.DrawText ("Shield Radius (m):", 10, 110); dc.DrawText(mystring4, 10, 125); wxString mystring5; mystring5 << inner_conductor_radius; dc.DrawText ("Inner Conductor Radius (m):", 10, 145); dc.DrawText(mystring5, 10, 160); float scaleFactor, inner_conductor_Scaledradius, shield_Scaledradius, outer_Scaledinsulation, shield_Scaledthickness; scaleFactor = (size_h * 0.25); outer_Scaledinsulation = (outer_insulation/outer_insulation)*scaleFactor; shield_Scaledthickness = (shield_thickness/outer_insulation)*scaleFactor; shield_Scaledradius = (shield_radius/outer_insulation)*scaleFactor; inner_conductor_Scaledradius = (inner_conductor_radius/outer_insulation)*scaleFactor; dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), outer_Scaledinsulation ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), shield_Scaledthickness+shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxLIGHT_GREY, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), inner_conductor_Scaledradius ); } if (str.compare("Twinax") == 0 ){ dc.SetTextForeground(*wxBLUE); wxString mystring1(str); dc.DrawText(mystring1, 10, 15); std::getline(cableFile, str); std::getline(cableFile, str); float inner_conductor_radius, inner_dielectric_radius, conductor_separation, shield_radius, shield_thickness, outer_dielectric_radius; cableFile >> inner_conductor_radius; std::getline(cableFile, str); //Read to end of line cableFile >> inner_dielectric_radius; std::getline(cableFile, str); //Read to end of line cableFile >> conductor_separation; std::getline(cableFile, str); //Read to end of line cableFile >> shield_radius; std::getline(cableFile, str); //Read to end of line cableFile >> shield_thickness; std::getline(cableFile, str); //Read to end of line cableFile >> outer_dielectric_radius; wxString mystring2; mystring2 << outer_dielectric_radius; dc.DrawText ("Outer Dielectric Radius (m):", 10, 40); dc.DrawText(mystring2, 10, 55); wxString mystring3; mystring3 << shield_thickness; dc.DrawText ("Shield Thickness (m):", 10, 75); dc.DrawText(mystring3, 10, 90); wxString mystring4; mystring4 << shield_radius; dc.DrawText ("Shield Radius (m):", 10, 110); dc.DrawText(mystring4, 10, 125); wxString mystring5; mystring5 << inner_dielectric_radius; dc.DrawText ("Inner Dielectric Radius (m):", 10, 145); dc.DrawText(mystring5, 10, 160); wxString mystring6; mystring6 << inner_conductor_radius; dc.DrawText ("Inner Conductor Radius (m):", 10, 180); dc.DrawText(mystring6, 10, 195); wxString mystring7; mystring7 << conductor_separation; dc.DrawText ("Conductor Separation (m):", 10, 215); dc.DrawText(mystring7, 10, 230); float scaleFactor, outer_dielectric_Scaledradius, shield_Scaledthickness, shield_Scaledradius, inner_dielectric_Scaledradius, inner_conductor_Scaledradius, conductor_Scaledseparation; scaleFactor = (size_h * 0.25); outer_dielectric_Scaledradius = (outer_dielectric_radius/outer_dielectric_radius)*scaleFactor; shield_Scaledthickness = (shield_thickness/outer_dielectric_radius)*scaleFactor; shield_Scaledradius = (shield_radius/outer_dielectric_radius)*scaleFactor; inner_dielectric_Scaledradius = (inner_dielectric_radius/outer_dielectric_radius)*scaleFactor; inner_conductor_Scaledradius = (inner_conductor_radius/outer_dielectric_radius)*scaleFactor; conductor_Scaledseparation = (conductor_separation/outer_dielectric_radius)*scaleFactor; dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), outer_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), shield_Scaledthickness+shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxLIGHT_GREY, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxWHITE, wxSOLID)); dc.DrawCircle( wxPoint((size_h/2)+(conductor_Scaledseparation/2),size_v/2), inner_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxWHITE, wxSOLID)); dc.DrawCircle( wxPoint((size_h/2)-(conductor_Scaledseparation/2),size_v/2), inner_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint((size_h/2)+(conductor_Scaledseparation/2),size_v/2), inner_conductor_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint((size_h/2)-(conductor_Scaledseparation/2),size_v/2), inner_conductor_Scaledradius ); } if (str.compare("Twisted_pair") == 0 ){ dc.SetTextForeground(*wxBLUE); wxString mystring1(str); dc.DrawText(mystring1, 10, 15); std::getline(cableFile, str); std::getline(cableFile, str); float conductor_radius, conductor_separation, dielectric_radius; cableFile >> conductor_radius; std::getline(cableFile, str); //Read to end of line cableFile >> conductor_separation; std::getline(cableFile, str); //Read to end of line cableFile >> dielectric_radius; wxString mystring2; mystring2 << conductor_radius; dc.DrawText ("Conductor Radius (m):", 10, 40); dc.DrawText(mystring2, 10, 55); wxString mystring3; mystring3 << conductor_separation; dc.DrawText ("Conductor Separation (m):", 10, 75); dc.DrawText(mystring3, 10, 90); wxString mystring4; mystring4 << dielectric_radius; dc.DrawText ("Dielectric Radius (m):", 10, 110); dc.DrawText(mystring4, 10, 125); float scaleFactor, conductor_Scaledradius, conductor_Scaledseparation, dielectric_Scaledradius; scaleFactor = (size_h * 0.25); conductor_Scaledradius = (conductor_radius/(dielectric_radius+conductor_separation))*scaleFactor; conductor_Scaledseparation = (conductor_separation/(dielectric_radius+conductor_separation))*scaleFactor; dielectric_Scaledradius = (dielectric_radius/(dielectric_radius+conductor_separation))*scaleFactor; float wire_pos = (conductor_Scaledseparation/2)*0.707; dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2-wire_pos,size_v/2-wire_pos), conductor_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2-wire_pos,size_v/2-wire_pos), dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2+wire_pos,size_v/2+wire_pos), conductor_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2+wire_pos,size_v/2+wire_pos), dielectric_Scaledradius ); } if (str.compare("Shielded_twisted_pair") == 0 ){ dc.SetTextForeground(*wxBLUE); wxString mystring1(str); dc.DrawText(mystring1, 10, 15); std::getline(cableFile, str); std::getline(cableFile, str); float inner_conductor_radius, inner_conductor_separation, inner_dielectric_radius, shield_radius, shield_thickness, outer_dielectric_radius; cableFile >> inner_conductor_radius; std::getline(cableFile, str); //Read to end of line cableFile >> inner_dielectric_radius; std::getline(cableFile, str); //Read to end of line cableFile >> inner_conductor_separation; std::getline(cableFile, str); //Read to end of line cableFile >> shield_radius; std::getline(cableFile, str); //Read to end of line cableFile >> shield_thickness; std::getline(cableFile, str); //Read to end of line cableFile >> outer_dielectric_radius; wxString mystring2; mystring2 << inner_conductor_radius; dc.DrawText ("Conductor Radius (m):", 10, 40); dc.DrawText(mystring2, 10, 55); wxString mystring3; mystring3 << inner_dielectric_radius; dc.DrawText ("Dielectric Radius (m):", 10, 75); dc.DrawText(mystring3, 10, 90); wxString mystring4; mystring4 << inner_conductor_separation; dc.DrawText ("Conductor Separation (m):", 10, 110); dc.DrawText(mystring4, 10, 125); wxString mystring5; mystring5 << shield_radius; dc.DrawText ("Shield Radius (m):", 10, 145); dc.DrawText(mystring5, 10, 160); wxString mystring6; mystring6 << shield_thickness; dc.DrawText ("Shield Thickness (m):", 10, 180); dc.DrawText(mystring6, 10, 195); wxString mystring7; mystring7 << outer_dielectric_radius; dc.DrawText ("Outer Dielectric Radius (m):", 10, 215); dc.DrawText(mystring7, 10, 230); float scaleFactor, inner_conductor_Scaledradius, inner_conductor_Scaledseparation, inner_dielectric_Scaledradius, shield_Scaledradius, shield_Scaledthickness, outer_dielectric_Scaledradius; scaleFactor = (size_h * 0.25); inner_conductor_Scaledradius = (inner_conductor_radius/outer_dielectric_radius)*scaleFactor; inner_conductor_Scaledseparation = (inner_conductor_separation/outer_dielectric_radius)*scaleFactor; inner_dielectric_Scaledradius = (inner_dielectric_radius/outer_dielectric_radius)*scaleFactor; shield_Scaledradius = (shield_radius/outer_dielectric_radius)*scaleFactor; shield_Scaledthickness = (shield_thickness/outer_dielectric_radius)*scaleFactor; outer_dielectric_Scaledradius = (outer_dielectric_radius/outer_dielectric_radius)*scaleFactor; float wire_pos = (inner_conductor_Scaledseparation/2)*0.707; dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), outer_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), shield_Scaledthickness+shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxWHITE, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2-wire_pos,size_v/2-wire_pos), inner_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2-wire_pos,size_v/2-wire_pos), inner_conductor_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2+wire_pos,size_v/2+wire_pos), inner_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2+wire_pos,size_v/2+wire_pos), inner_conductor_Scaledradius ); } if (str.compare("Spacewire") == 0 ){ dc.SetTextForeground(*wxBLUE); wxString mystring1(str); dc.DrawText(mystring1, 10, 15); std::getline(cableFile, str); std::getline(cableFile, str); float inner_conductor_radius, inner_conductor_separation, inner_dielectric_radius, inner_shield_radius, inner_shield_thickness, inner_shield_jacket_radius, shielded_twisted_pair_radius, outer_shield_radius, outer_shield_thickness, outer_dielectric_radius; cableFile >> inner_conductor_radius; std::getline(cableFile, str); //Read to end of line cableFile >> inner_dielectric_radius; std::getline(cableFile, str); //Read to end of line cableFile >> inner_conductor_separation; std::getline(cableFile, str); //Read to end of line cableFile >> inner_shield_radius; std::getline(cableFile, str); //Read to end of line cableFile >> inner_shield_thickness; std::getline(cableFile, str); //Read to end of line cableFile >> inner_shield_jacket_radius; std::getline(cableFile, str); //Read to end of line cableFile >> shielded_twisted_pair_radius; std::getline(cableFile, str); //Read to end of line cableFile >> outer_shield_radius; std::getline(cableFile, str); //Read to end of line cableFile >> outer_shield_thickness; std::getline(cableFile, str); //Read to end of line cableFile >> outer_dielectric_radius; wxString mystring2; mystring2 << inner_conductor_radius; dc.DrawText ("TP Conductor Radius (m):", 10, 40); dc.DrawText(mystring2, 10, 55); wxString mystring3; mystring3 << inner_dielectric_radius; dc.DrawText ("TP Dielectric Radius (m):", 10, 75); dc.DrawText(mystring3, 10, 90); wxString mystring4; mystring4 << inner_conductor_separation; dc.DrawText ("TP Conductor Separation (m):", 10, 110); dc.DrawText(mystring4, 10, 125); wxString mystring5; mystring5 << inner_shield_radius; dc.DrawText ("TP Shield Radius (m):", 10, 145); dc.DrawText(mystring5, 10, 160); wxString mystring6; mystring6 << inner_shield_thickness; dc.DrawText ("TP Shield Thickness (m):", 10, 180); dc.DrawText(mystring6, 10, 195); wxString mystring7; mystring7 << inner_shield_jacket_radius; dc.DrawText ("TP Shield Jacket Radius (m):", 10, 215); dc.DrawText(mystring7, 10, 230); wxString mystring8; mystring8 << shielded_twisted_pair_radius; dc.DrawText ("TP Radius (m):", 10, 250); dc.DrawText(mystring8, 10, 265); wxString mystring9; mystring9 << outer_shield_radius; dc.DrawText ("Outer Shield Radius (m):", 10, 320); dc.DrawText(mystring9, 10, 335); wxString mystring10; mystring10 << outer_shield_thickness; dc.DrawText ("Outer Shield Thickness (m):", 10, 355); dc.DrawText(mystring10, 10, 370); wxString mystring11; mystring11 << outer_dielectric_radius; dc.DrawText ("Outer Dielectric Radius (m):", 10, 390); dc.DrawText(mystring11, 10, 405); float scaleFactor, inner_conductor_Scaledradius, inner_dielectric_Scaledradius, inner_conductor_Scaledseparation, inner_shield_Scaledradius, inner_shield_Scaledthickness, inner_shield_jacket_Scaledradius, shielded_twisted_pair_Scaledradius, outer_shield_Scaledradius, outer_shield_Scaledthickness, outer_dielectric_Scaledradius; scaleFactor = (size_h * 0.25); inner_conductor_Scaledradius = (inner_conductor_radius/outer_dielectric_radius)*scaleFactor; inner_dielectric_Scaledradius = (inner_dielectric_radius/outer_dielectric_radius)*scaleFactor; inner_conductor_Scaledseparation = (inner_conductor_separation/outer_dielectric_radius)*scaleFactor; inner_shield_Scaledradius = (inner_shield_radius/outer_dielectric_radius)*scaleFactor; inner_shield_Scaledthickness = (inner_shield_thickness/outer_dielectric_radius)*scaleFactor; inner_shield_jacket_Scaledradius = (inner_shield_jacket_radius/outer_dielectric_radius)*scaleFactor; shielded_twisted_pair_Scaledradius = (shielded_twisted_pair_radius/outer_dielectric_radius)*scaleFactor; outer_shield_Scaledradius = (outer_shield_radius/outer_dielectric_radius)*scaleFactor; outer_shield_Scaledthickness = (outer_shield_thickness/outer_dielectric_radius)*scaleFactor; outer_dielectric_Scaledradius = (outer_dielectric_radius/outer_dielectric_radius)*scaleFactor; dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), outer_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), outer_shield_Scaledthickness+outer_shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxWHITE, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), outer_shield_Scaledradius ); //TP Top dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2-shielded_twisted_pair_Scaledradius)), inner_shield_jacket_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2-shielded_twisted_pair_Scaledradius)), inner_shield_Scaledthickness + inner_shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxWHITE, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2-shielded_twisted_pair_Scaledradius)), inner_shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2-shielded_twisted_pair_Scaledradius-inner_conductor_Scaledseparation/2)), inner_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2-shielded_twisted_pair_Scaledradius+inner_conductor_Scaledseparation/2)), inner_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2-shielded_twisted_pair_Scaledradius-inner_conductor_Scaledseparation/2)), inner_conductor_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2-shielded_twisted_pair_Scaledradius+inner_conductor_Scaledseparation/2)), inner_conductor_Scaledradius ); //TP Left dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint((size_h/2-shielded_twisted_pair_Scaledradius),size_v/2), inner_shield_jacket_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint((size_h/2-shielded_twisted_pair_Scaledradius),size_v/2), inner_shield_Scaledthickness + inner_shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxWHITE, wxSOLID)); dc.DrawCircle( wxPoint((size_h/2-shielded_twisted_pair_Scaledradius),size_v/2), inner_shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint((size_h/2-shielded_twisted_pair_Scaledradius-inner_conductor_Scaledseparation/2),size_v/2), inner_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint((size_h/2-shielded_twisted_pair_Scaledradius+inner_conductor_Scaledseparation/2),size_v/2), inner_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint((size_h/2-shielded_twisted_pair_Scaledradius-inner_conductor_Scaledseparation/2),size_v/2), inner_conductor_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint((size_h/2-shielded_twisted_pair_Scaledradius+inner_conductor_Scaledseparation/2),size_v/2), inner_conductor_Scaledradius ); //TP Bottom dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2+shielded_twisted_pair_Scaledradius)), inner_shield_jacket_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2+shielded_twisted_pair_Scaledradius)), inner_shield_Scaledthickness + inner_shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxWHITE, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2+shielded_twisted_pair_Scaledradius)), inner_shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2+shielded_twisted_pair_Scaledradius+inner_conductor_Scaledseparation/2)), inner_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2+shielded_twisted_pair_Scaledradius-inner_conductor_Scaledseparation/2)), inner_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2+shielded_twisted_pair_Scaledradius+inner_conductor_Scaledseparation/2)), inner_conductor_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,(size_v/2+shielded_twisted_pair_Scaledradius-inner_conductor_Scaledseparation/2)), inner_conductor_Scaledradius ); //TP Right dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint((size_h/2+shielded_twisted_pair_Scaledradius),size_v/2), inner_shield_jacket_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint((size_h/2+shielded_twisted_pair_Scaledradius),size_v/2), inner_shield_Scaledthickness + inner_shield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxWHITE, wxSOLID)); dc.DrawCircle( wxPoint((size_h/2+shielded_twisted_pair_Scaledradius),size_v/2), inner_shield_Scaledradius ); dc.SetTextForeground(*wxBLACK); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint((size_h/2+shielded_twisted_pair_Scaledradius-inner_conductor_Scaledseparation/2),size_v/2), inner_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawCircle( wxPoint((size_h/2+shielded_twisted_pair_Scaledradius+inner_conductor_Scaledseparation/2),size_v/2), inner_dielectric_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint((size_h/2+shielded_twisted_pair_Scaledradius-inner_conductor_Scaledseparation/2),size_v/2), inner_conductor_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint((size_h/2+shielded_twisted_pair_Scaledradius+inner_conductor_Scaledseparation/2),size_v/2), inner_conductor_Scaledradius ); } if (str.compare("Overshield") == 0 ){ dc.SetTextForeground(*wxBLUE); wxString mystring1(str); dc.DrawText(mystring1, 10, 15); std::getline(cableFile, str); std::getline(cableFile, str); float overshield_radius, overshield_thickness; cableFile >> overshield_radius; std::getline(cableFile, str); //Read to end of line cableFile >> overshield_thickness; wxString mystring2; mystring2 << overshield_radius; dc.DrawText ("Overshield Radius (m):", 10, 40); dc.DrawText(mystring2, 10, 55); wxString mystring3; mystring3 << overshield_thickness; dc.DrawText ("Overshield Thickness (m):", 10, 75); dc.DrawText(mystring3, 10, 90); float scaleFactor, overshield_Scaledradius, overshield_Scaledthickness; scaleFactor = (size_h * 0.25); overshield_Scaledradius = (overshield_radius/overshield_radius)*scaleFactor; overshield_Scaledthickness = (overshield_thickness/overshield_radius)*scaleFactor; dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), overshield_Scaledthickness+overshield_Scaledradius ); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxWHITE, wxSOLID)); dc.DrawCircle( wxPoint(size_h/2,size_v/2), overshield_Scaledradius ); } if (str.compare("flex_cable") == 0 ){ dc.SetTextForeground(*wxBLUE); wxString mystring1(str); dc.DrawText(mystring1, 10, 15); //float conductors, conductor_width, conductor_height, conductor_separation, dielectric_offset_x, dielectric_offset_y; float dielectric_width, dielectric_height, conductor_rows; std::getline(cableFile, str); //Read to end of line std::getline(cableFile, str); //Read to end of line cableFile >> dielectric_width; std::getline(cableFile, str); //Read to end of line cableFile >> dielectric_height; std::getline(cableFile, str); //Read to end of line cableFile >> conductor_rows; std::getline(cableFile, str); //Read to end of line wxString mystring2; mystring2 << dielectric_width; dc.DrawText ("Dielectric Width (m)", 10, 40); dc.DrawText(mystring2, 10, 55); wxString mystring3; mystring3 << dielectric_height; dc.DrawText ("Dielectric Height (m):", 10, 75); dc.DrawText(mystring3, 10, 90); wxString mystring4; mystring4 << conductor_rows; dc.DrawText ("Number of Conductor Rows:", 10, 110); dc.DrawText(mystring4, 10, 125); float scaleFactor = (size_h/dielectric_width) * 0.8; float scaled_dielectric_width, scaled_dielectric_height, scaled_offset_x, scaled_offset_y; scaled_dielectric_width = dielectric_width * scaleFactor; scaled_dielectric_height = dielectric_height * scaleFactor; //Draw dielectric dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK, wxBDIAGONAL_HATCH)); dc.DrawRectangle(wxPoint(size_h/2-scaled_dielectric_width/2, size_v/2-scaled_dielectric_height/2), wxSize(scaled_dielectric_width, scaled_dielectric_height)); float offset_x, offset_y, width, height,separation, conductors; for (int i = 0; i < conductor_rows;i++){ cableFile >> offset_x; std::getline(cableFile, str); //Read to end of line cableFile >> offset_y; std::getline(cableFile, str); //Read to end of line cableFile >> width; std::getline(cableFile, str); //Read to end of line cableFile >> height; std::getline(cableFile, str); //Read to end of line cableFile >> separation; std::getline(cableFile, str); //Read to end of line cableFile >> conductors; std::getline(cableFile, str); //Read to end of line float scaled_offset_x = offset_x * scaleFactor; float scaled_offset_y = offset_y * scaleFactor; float scaled_conductor_width = width * scaleFactor; float scaled_conductor_height = height * scaleFactor; float scaled_conductor_separation = separation * scaleFactor; float x_origin = size_h/2 - (scaled_conductor_width * conductors/2) - scaled_conductor_separation*(conductors - 1)/2 - scaled_offset_x; float y_origin = size_v/2 - (scaled_conductor_height/2) - scaled_offset_y; dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxWHITE, wxSOLID)); for (int j = 0; j> conductors; std::getline(cableFile, str); //Read to end of line std::getline(cableFile, str); //Read to end of line cableFile >> conductor_radius; std::getline(cableFile, str); //Read to end of line cableFile >> conductor_pitch; std::getline(cableFile, str); //Read to end of line cableFile >> conductor_separation; std::getline(cableFile, str); //Read to end of line cableFile >> shell_offset; wxString mystring2; mystring2 << conductors; dc.DrawText ("Number of Conductors:", 10, 40); dc.DrawText(mystring2, 10, 55); wxString mystring3; mystring3 << conductor_radius; dc.DrawText ("Conductor Radius (m):", 10, 75); dc.DrawText(mystring3, 10, 90); wxString mystring4; mystring4 << conductor_pitch; dc.DrawText ("Conductor Pitch (m):", 10, 110); dc.DrawText(mystring4, 10, 125); wxString mystring5; mystring5 << conductor_separation; dc.DrawText ("Conductor Separation (m):", 10, 145); dc.DrawText(mystring5, 10, 160); wxString mystring6; mystring6 << shell_offset; dc.DrawText ("Shell Offset from Conductors (m):", 10, 180); dc.DrawText(mystring6, 10, 195); float totalWidth = (conductors/2 * conductor_separation) + (2 * shell_offset) + (2 * conductor_radius); float scaleFactor, conductor_Scaledradius, conductor_Scaledpitch, conductor_Scaledseparation;// shell_Scaledoffset, total_Scaledwidth; float x_origin, y_origin; scaleFactor = (size_h * 0.25); conductor_Scaledradius = (conductor_radius/totalWidth)*scaleFactor; conductor_Scaledpitch = (conductor_pitch/totalWidth)*scaleFactor; conductor_Scaledseparation = (conductor_separation/totalWidth)*scaleFactor; //shell_Scaledoffset = (shell_offset/totalWidth)*scaleFactor; //total_Scaledwidth = (totalWidth/totalWidth)*scaleFactor; dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); // Upper conductors & Shell int upper_conductors = conductors / 2; x_origin = (size_h/2) - (upper_conductors/2 * conductor_Scaledseparation); y_origin = (size_v/2) - (conductor_Scaledpitch); dc.SetPen( wxPen( wxColor(0,0,0),1 ) ); dc.SetBrush(wxBrush(*wxBLACK)); for(int i=0;i