diff --git a/utils/kicad2step/kicad2step.cpp b/utils/kicad2step/kicad2step.cpp index c432fa8b24..c9669632c9 100644 --- a/utils/kicad2step/kicad2step.cpp +++ b/utils/kicad2step/kicad2step.cpp @@ -2,7 +2,7 @@ * This program source code file is part of kicad2mcad * * Copyright (C) 2016 Cirilo Bernardo - * Copyright (C) 2016-2021 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2016-2022 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -58,8 +58,11 @@ protected: virtual void OnOKButtonClick( wxCommandEvent& aEvent ) override; }; + // Horrible hack until we decouple things more static PANEL_KICAD2STEP* openPanel = nullptr; + + void ReportMessage( const wxString& aMessage ) { if( openPanel != nullptr ) @@ -75,33 +78,35 @@ protected: const Message_Gravity theGravity, const Standard_Boolean theToPutEol ) const override { - Send (TCollection_AsciiString (theString), theGravity, theToPutEol); + Send( TCollection_AsciiString( theString ), theGravity, theToPutEol ); } - virtual void Send( const TCollection_AsciiString& theString, - const Message_Gravity theGravity, - const Standard_Boolean theToPutEol) const override + virtual void Send( const TCollection_AsciiString& theString, + const Message_Gravity theGravity, + const Standard_Boolean theToPutEol ) const override #else - virtual void send( const TCollection_AsciiString& theString, - const Message_Gravity theGravity ) const override + virtual void send( const TCollection_AsciiString& theString, + const Message_Gravity theGravity ) const override #endif - { + { if( theGravity >= Message_Info ) { - ReportMessage( theString.ToCString() ); + ReportMessage( theString.ToCString() ); + #if OCC_VERSION_HEX < OCC_VERSION_MIN if( theToPutEol ) - ReportMessage( wxT( "\n" ) ); + ReportMessage( wxT( "\n" ) ); #else ReportMessage( wxT( "\n" ) ); #endif } + if( theGravity >= Message_Alarm ) openPanel->m_error = true; if( theGravity == Message_Fail ) openPanel->m_fail = true; - } + } }; KICAD2MCAD_PRMS::KICAD2MCAD_PRMS() @@ -122,7 +127,7 @@ KICAD2MCAD_PRMS::KICAD2MCAD_PRMS() KICAD2STEP_FRAME::KICAD2STEP_FRAME( const wxString& title ) : - KICAD2STEP_FRAME_BASE( NULL, wxID_ANY, title ) + KICAD2STEP_FRAME_BASE( nullptr, wxID_ANY, title ) { } @@ -177,8 +182,7 @@ int PANEL_KICAD2STEP::RunConverter() { out_fname.Assign( m_params.m_outputFile ); - // Set the file extension if the user's requested - // file name does not have an extension. + // Set the file extension if the user's requested file name does not have an extension. if( !out_fname.HasExt() ) out_fname.SetExt( m_params.getOutputExt() ); } @@ -198,7 +202,6 @@ int PANEL_KICAD2STEP::RunConverter() pcb.SetMinDistance( m_params.m_minDistance ); ReportMessage( wxString::Format( _( "Read file: '%s'\n" ), m_params.m_filename ) ); - Message::DefaultMessenger()->RemovePrinters( STANDARD_TYPE( Message_PrinterOStream ) ); Message::DefaultMessenger()->AddPrinter( new KiCadPrinter ); @@ -273,7 +276,6 @@ int PANEL_KICAD2STEP::RunConverter() msg = _( "STEP file has been created, but there are warnings." ); } - ReportMessage( msg ); return 0; diff --git a/utils/kicad2step/kicad2step_app.cpp b/utils/kicad2step/kicad2step_app.cpp index 9b46599e35..83da06e4e2 100644 --- a/utils/kicad2step/kicad2step_app.cpp +++ b/utils/kicad2step/kicad2step_app.cpp @@ -2,7 +2,7 @@ * This program source code file is part of kicad2mcad * * Copyright (C) 2016 Cirilo Bernardo - * Copyright (C) 2016-2021 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2016-2022 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -40,6 +40,7 @@ #define REGEX_DELIMITER "(?:[\\s]*x)" #define REGEX_UNIT "([m]{2}|(?:in))" + class KICAD2MCAD_APP : public wxApp { public: @@ -161,7 +162,8 @@ bool KICAD2MCAD_APP::OnCmdLineParsed( wxCmdLineParser& parser ) if( tunit.size() > 0 ) // No unit accepted ( default = mm ) { - if( ( !sm.str( 1 ).compare( " " ) || !sm.str( 2 ).compare( " " ) ) || ( sm.size() != 4 ) ) + if( ( !sm.str( 1 ).compare( " " ) || !sm.str( 2 ).compare( " " ) ) || + ( sm.size() != 4 ) ) { parser.Usage(); return false; @@ -213,7 +215,6 @@ bool KICAD2MCAD_APP::OnCmdLineParsed( wxCmdLineParser& parser ) if( parser.Found( wxT( "o" ), &tstr ) ) m_params.m_outputFile = tstr; - if( parser.GetParamCount() < 1 ) { parser.Usage(); diff --git a/utils/kicad2step/pcb/3d_resolver.cpp b/utils/kicad2step/pcb/3d_resolver.cpp index a9c01e9af2..f48532aea3 100644 --- a/utils/kicad2step/pcb/3d_resolver.cpp +++ b/utils/kicad2step/pcb/3d_resolver.cpp @@ -2,7 +2,7 @@ * This program source code file is part kicad2mcad * * Copyright (C) 2015-2016 Cirilo Bernardo - * Copyright (C) 2020-2021 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2020-2022 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -325,7 +325,7 @@ bool S3D_RESOLVER::addPath( const SEARCH_PATH& aPath ) #ifdef _WIN32 while( tpath.m_Pathexp.EndsWith( wxT( "\\" ) ) ) - tpath.m_Pathexp.erase( tpath.m_Pathexp.length() - 1 ); + tpath.m_Pathexp.erase( tpath.m_Pathexp.length() - 1 ); #else while( tpath.m_Pathexp.EndsWith( wxT( "/" ) ) && tpath.m_Pathexp.length() > 1 ) tpath.m_Pathexp.erase( tpath.m_Pathexp.length() - 1 ); @@ -566,7 +566,7 @@ wxString S3D_RESOLVER::ShortenPath( const wxString& aFullPathName ) idx = fname.find( fps ); - if( std::string::npos != idx && 0 == idx ) + if( std::string::npos != idx && 0 == idx ) { fname = fname.substr( fps.size() ); @@ -609,7 +609,6 @@ wxString S3D_RESOLVER::ShortenPath( const wxString& aFullPathName ) } - const std::list< SEARCH_PATH >* S3D_RESOLVER::GetPaths( void ) { return &m_Paths; @@ -691,7 +690,7 @@ static bool getHollerith( const std::string& aString, size_t& aIndex, wxString& size_t nchars; istr >> nchars; - if( (i2 + nchars) >= aString.size() ) + if( ( i2 + nchars ) >= aString.size() ) { wxLogTrace( trace3dResolver, wxT( "%s:%s:%d\n * unexpected end of line in line '%s'" ), __FILE__, __FUNCTION__, __LINE__, aString ); diff --git a/utils/kicad2step/pcb/kicadcurve.cpp b/utils/kicad2step/pcb/kicadcurve.cpp index 6a03c053a8..48436674bf 100644 --- a/utils/kicad2step/pcb/kicadcurve.cpp +++ b/utils/kicad2step/pcb/kicadcurve.cpp @@ -32,6 +32,8 @@ #include #include #include <../../../libs/kimath/include/geometry/shape_arc.h> +#include +#include KICADCURVE::KICADCURVE() @@ -53,8 +55,6 @@ KICADCURVE::~KICADCURVE() return; } -#include -#include bool KICADCURVE::Read( SEXPR::SEXPR* aEntry, CURVE_TYPE aCurveType ) { @@ -112,7 +112,7 @@ bool KICADCURVE::Read( SEXPR::SEXPR* aEntry, CURVE_TYPE aCurveType ) SEXPR::SEXPR* sub_child = ( *list )[ii]; text = sub_child->GetChild( 0 )->GetSymbol(); - // inside pts list, parmeters are xy point coord + // inside pts list, parameters are xy point coord // or a arc (start, middle, end) points if( text == "xy" ) { @@ -125,16 +125,18 @@ bool KICADCURVE::Read( SEXPR::SEXPR* aEntry, CURVE_TYPE aCurveType ) { switch( ii ) { - case 1: m_start = coord; break; + case 1: m_start = coord; break; case 2: m_bezierctrl1 = coord; break; case 3: m_bezierctrl2 = coord; break; - case 4: m_end = coord; break; + case 4: m_end = coord; break; default: break; } } else + { m_poly.push_back( coord ); + } } else if( text == "arc" ) { @@ -164,7 +166,7 @@ bool KICADCURVE::Read( SEXPR::SEXPR* aEntry, CURVE_TYPE aCurveType ) } // To convert arc edge to segments, we are using SHAPE_ARC, but SHAPE_ARC use - // integer coords. So to avoid truncations, use a scaling factor. + // integer coords. So to avoid truncation, use a scaling factor. // 1e5 is enough. const double scale = 1e5; SHAPE_ARC new_arc( VECTOR2I( arc_start.x*scale, arc_start.y*scale ), @@ -176,8 +178,8 @@ bool KICADCURVE::Read( SEXPR::SEXPR* aEntry, CURVE_TYPE aCurveType ) // Add segments to STEP polygon for( int ll = 0; ll < segs_from_arc.PointCount(); ll++ ) - m_poly.emplace_back( segs_from_arc.CPoint(ll).x/scale, - segs_from_arc.CPoint(ll).y/scale ); + m_poly.emplace_back( segs_from_arc.CPoint( ll ).x / scale, + segs_from_arc.CPoint( ll ).y / scale ); } } } @@ -237,8 +239,8 @@ bool KICADCURVE::Read( SEXPR::SEXPR* aEntry, CURVE_TYPE aCurveType ) // So convert new params to old params if( CURVE_ARC == aCurveType && m_arcHasMiddlePoint ) { - // To caculate old params, we are using SHAPE_ARC, but SHAPE_ARC use - // integer coords. So to avoid truncations, use a scaling factor. + // To calculate old params, we are using SHAPE_ARC, but SHAPE_ARC use + // integer coords. So to avoid truncation, use a scaling factor. // 1e5 is enough. const double scale = 1e5; SHAPE_ARC new_arc( VECTOR2I( m_start.x*scale, m_start.y*scale ), @@ -248,10 +250,10 @@ bool KICADCURVE::Read( SEXPR::SEXPR* aEntry, CURVE_TYPE aCurveType ) VECTOR2I center = new_arc.GetCenter(); m_start.x = center.x/scale; m_start.y = center.y/scale; - m_end.x = new_arc.GetP0().x/scale; - m_end.y = new_arc.GetP0().y/scale; - m_ep.x = new_arc.GetP1().x/scale; - m_ep.y = new_arc.GetP1().y/scale; + m_end.x = new_arc.GetP0().x / scale; + m_end.y = new_arc.GetP0().y / scale; + m_ep.x = new_arc.GetP1().x / scale; + m_ep.y = new_arc.GetP1().y / scale; m_angle = new_arc.GetCentralAngle().AsRadians(); } @@ -265,28 +267,28 @@ std::string KICADCURVE::Describe() const switch( m_form ) { - case CURVE_LINE: - desc << "line start: " << m_start << " end: " << m_end; - break; + case CURVE_LINE: + desc << "line start: " << m_start << " end: " << m_end; + break; - case CURVE_ARC: - desc << "arc center: " << m_start << " radius: " << m_radius - << " angle: " << 180.0 * m_angle / M_PI - << " arc start: " << m_end << " arc end: " << m_ep; - break; + case CURVE_ARC: + desc << "arc center: " << m_start << " radius: " << m_radius + << " angle: " << 180.0 * m_angle / M_PI + << " arc start: " << m_end << " arc end: " << m_ep; + break; - case CURVE_CIRCLE: - desc << "circle center: " << m_start << " radius: " << m_radius; - break; + case CURVE_CIRCLE: + desc << "circle center: " << m_start << " radius: " << m_radius; + break; - case CURVE_BEZIER: - desc << "bezier start: " << m_start << " end: " << m_end - << " ctrl1: " << m_bezierctrl1 << " ctrl2: " << m_bezierctrl2 ; - break; + case CURVE_BEZIER: + desc << "bezier start: " << m_start << " end: " << m_end + << " ctrl1: " << m_bezierctrl1 << " ctrl2: " << m_bezierctrl2 ; + break; - default: - desc << ""; - break; + default: + desc << ""; + break; } return desc.str(); diff --git a/utils/kicad2step/pcb/kicadmodel.cpp b/utils/kicad2step/pcb/kicadmodel.cpp index 5fcd4ad0aa..d5f0f4914d 100644 --- a/utils/kicad2step/pcb/kicadmodel.cpp +++ b/utils/kicad2step/pcb/kicadmodel.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2016 Cirilo Bernardo - * Copyright (C) 2016-2020 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2016-2022 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -89,10 +89,7 @@ bool KICADMODEL::Read( SEXPR::SEXPR* aEntry ) std::string name = child->GetChild( 0 )->GetSymbol(); bool ret = true; - /* - * Version 4.x and prior used 'at' parameter, - * which was specified in inches. - */ + // Version 4.x and prior used 'at' parameter, which was specified in inches. if( name == "at" ) { ret = Get3DCoordinate( child->GetChild( 1 ), m_offset ); @@ -104,12 +101,9 @@ bool KICADMODEL::Read( SEXPR::SEXPR* aEntry ) m_offset.z *= 25.4f; } } - /* - * From 5.x onwards, 3D model is provided in 'offset', - * which is in millimetres - */ else if( name == "offset" ) { + // From 5.x onwards, 3D model is provided in 'offset', which is in millimetres. ret = Get3DCoordinate( child->GetChild( 1 ), m_offset ); } else if( name == "scale" ) diff --git a/utils/kicad2step/pcb/kicadpcb.cpp b/utils/kicad2step/pcb/kicadpcb.cpp index 120015f486..2e595e0730 100644 --- a/utils/kicad2step/pcb/kicadpcb.cpp +++ b/utils/kicad2step/pcb/kicadpcb.cpp @@ -150,7 +150,7 @@ bool KICADPCB::WriteIGES( const wxString& aFileName ) bool KICADPCB::parsePCB( SEXPR::SEXPR* data ) { - if( NULL == data ) + if( nullptr == data ) return false; if( data->IsList() ) @@ -209,7 +209,7 @@ bool KICADPCB::parsePCB( SEXPR::SEXPR* data ) bool KICADPCB::parseGeneral( SEXPR::SEXPR* data ) { size_t nc = data->GetNumberOfChildren(); - SEXPR::SEXPR* child = NULL; + SEXPR::SEXPR* child = nullptr; for( size_t i = 1; i < nc; ++i ) { @@ -240,7 +240,7 @@ bool KICADPCB::parseGeneral( SEXPR::SEXPR* data ) bool KICADPCB::parseLayers( SEXPR::SEXPR* data ) { size_t nc = data->GetNumberOfChildren(); - SEXPR::SEXPR* child = NULL; + SEXPR::SEXPR* child = nullptr; // Read the layername and the corresponding layer id list: for( size_t i = 1; i < nc; ++i ) @@ -273,7 +273,7 @@ bool KICADPCB::parseStackupLayer( SEXPR::SEXPR* data ) if( data->IsList() && data->GetNumberOfChildren() >= 3 ) { size_t nc = data->GetNumberOfChildren(); - SEXPR::SEXPR* child = NULL; + SEXPR::SEXPR* child = nullptr; std::string ref; std::string value; @@ -353,7 +353,7 @@ bool KICADPCB::parseStackupLayer( SEXPR::SEXPR* data ) bool KICADPCB::parseStackup( SEXPR::SEXPR* data ) { size_t nc = data->GetNumberOfChildren(); - SEXPR::SEXPR* child = NULL; + SEXPR::SEXPR* child = nullptr; for( size_t i = 1; i < nc; ++i ) { @@ -423,7 +423,7 @@ int KICADPCB::GetLayerId( std::string& aLayerName ) bool KICADPCB::parseSetup( SEXPR::SEXPR* data ) { size_t nc = data->GetNumberOfChildren(); - SEXPR::SEXPR* child = NULL; + SEXPR::SEXPR* child = nullptr; for( size_t i = 1; i < nc; ++i ) { @@ -632,6 +632,7 @@ bool KICADPCB::ComposePCB( bool aComposeVirtual, bool aSubstituteModels ) lcurve.m_end.y = -( lcurve.m_end.y - origin.y ); lcurve.m_start.x -= origin.x; lcurve.m_end.x -= origin.x; + // used in bezier curves: lcurve.m_bezierctrl1.y = -( lcurve.m_bezierctrl1.y - origin.y ); lcurve.m_bezierctrl1.x -= origin.x; @@ -653,7 +654,7 @@ bool KICADPCB::ComposePCB( bool aComposeVirtual, bool aSubstituteModels ) { ReportMessage( wxT( "could not create PCB solid model\n" ) ); delete m_pcb_model; - m_pcb_model = NULL; + m_pcb_model = nullptr; return false; } diff --git a/utils/kicad2step/pcb/oce_utils.cpp b/utils/kicad2step/pcb/oce_utils.cpp index 1e6cff9ced..06578c3e52 100644 --- a/utils/kicad2step/pcb/oce_utils.cpp +++ b/utils/kicad2step/pcb/oce_utils.cpp @@ -272,7 +272,7 @@ bool PCBMODEL::AddOutlineSegment( KICADCURVE* aCurve ) if( NULL == aCurve || LAYER_EDGE != aCurve->m_layer || CURVE_NONE == aCurve->m_form ) return false; - if( CURVE_LINE == aCurve->m_form || CURVE_BEZIER == aCurve->m_form ) + if( CURVE_LINE == aCurve->m_form || CURVE_BEZIER == aCurve->m_form ) { // reject zero - length lines double dx = aCurve->m_end.x - aCurve->m_start.x; @@ -364,74 +364,71 @@ bool PCBMODEL::AddOutlineSegment( KICADCURVE* aCurve ) break; case CURVE_CIRCLE: - do - { - double dx = aCurve->m_start.x - aCurve->m_radius; + { + double dx = aCurve->m_start.x - aCurve->m_radius; - if( dx < m_minx ) - { - m_minx = dx; - m_mincurve = --( m_curves.end() ); - } - } while( 0 ); + if( dx < m_minx ) + { + m_minx = dx; + m_mincurve = --( m_curves.end() ); + } break; + } case CURVE_ARC: - do + { + double dx0 = aCurve->m_end.x - aCurve->m_start.x; + double dy0 = aCurve->m_end.y - aCurve->m_start.y; + int q0; // quadrant of start point + + if( dx0 > 0.0 && dy0 >= 0.0 ) + q0 = 1; + else if( dx0 <= 0.0 && dy0 > 0.0 ) + q0 = 2; + else if( dx0 < 0.0 && dy0 <= 0.0 ) + q0 = 3; + else + q0 = 4; + + double dx1 = aCurve->m_ep.x - aCurve->m_start.x; + double dy1 = aCurve->m_ep.y - aCurve->m_start.y; + int q1; // quadrant of end point + + if( dx1 > 0.0 && dy1 >= 0.0 ) + q1 = 1; + else if( dx1 <= 0.0 && dy1 > 0.0 ) + q1 = 2; + else if( dx1 < 0.0 && dy1 <= 0.0 ) + q1 = 3; + else + q1 = 4; + + // calculate x0, y0 for the start point on a CCW arc + double x0 = aCurve->m_end.x; + double x1 = aCurve->m_ep.x; + + if( aCurve->m_angle < 0.0 ) { - double dx0 = aCurve->m_end.x - aCurve->m_start.x; - double dy0 = aCurve->m_end.y - aCurve->m_start.y; - int q0; // quadrant of start point + std::swap( q0, q1 ); + std::swap( x0, x1 ); + } - if( dx0 > 0.0 && dy0 >= 0.0 ) - q0 = 1; - else if( dx0 <= 0.0 && dy0 > 0.0 ) - q0 = 2; - else if( dx0 < 0.0 && dy0 <= 0.0 ) - q0 = 3; - else - q0 = 4; + double minx; - double dx1 = aCurve->m_ep.x - aCurve->m_start.x; - double dy1 = aCurve->m_ep.y - aCurve->m_start.y; - int q1; // quadrant of end point + if( ( q0 <= 2 && q1 >= 3 ) || ( q0 >= 3 && x0 > x1 ) ) + minx = aCurve->m_start.x - aCurve->m_radius; + else + minx = std::min( x0, x1 ); - if( dx1 > 0.0 && dy1 >= 0.0 ) - q1 = 1; - else if( dx1 <= 0.0 && dy1 > 0.0 ) - q1 = 2; - else if( dx1 < 0.0 && dy1 <= 0.0 ) - q1 = 3; - else - q1 = 4; - - // calculate x0, y0 for the start point on a CCW arc - double x0 = aCurve->m_end.x; - double x1 = aCurve->m_ep.x; - - if( aCurve->m_angle < 0.0 ) - { - std::swap( q0, q1 ); - std::swap( x0, x1 ); - } - - double minx; - - if( ( q0 <= 2 && q1 >= 3 ) || ( q0 >= 3 && x0 > x1 ) ) - minx = aCurve->m_start.x - aCurve->m_radius; - else - minx = std::min( x0, x1 ); - - if( minx < m_minx ) - { - m_minx = minx; - m_mincurve = --( m_curves.end() ); - } - - } while( 0 ); + if( minx < m_minx ) + { + m_minx = minx; + m_mincurve = --( m_curves.end() ); + } break; + } case CURVE_BEZIER: if( aCurve->m_start.x < m_minx ) @@ -448,15 +445,13 @@ bool PCBMODEL::AddOutlineSegment( KICADCURVE* aCurve ) break; - default: - // unexpected curve type - do - { - wxString msg; - msg.Printf( wxT( " * AddOutlineSegment() unsupported curve type: %d\n" ), - aCurve->m_form ); - ReportMessage( msg ); - } while( 0 ); + default: // unexpected curve type + { + wxString msg; + msg.Printf( wxT( " * AddOutlineSegment() unsupported curve type: %d\n" ), + aCurve->m_form ); + ReportMessage( msg ); + } return false; } @@ -841,7 +836,9 @@ bool PCBMODEL::CreatePCB() char_count++; if( char_count < 80 ) + { ReportMessage( wxT( "." ) ); + } else { char_count = 0; @@ -876,16 +873,18 @@ bool PCBMODEL::CreatePCB() if( m_pcb_label.IsNull() ) return false; - // AddComponent adds a label that has a reference (not a parent/child relation) to the real label - // We need to extract that real label to name it for the STEP output cleanly + // AddComponent adds a label that has a reference (not a parent/child relation) to the real + // label. We need to extract that real label to name it for the STEP output cleanly // Why are we trying to name the bare board? Because CAD tools like SolidWorks do fun things - // like "deduplicate" imported STEPs by swapping STEP assembly components with already identically named assemblies - // So we want to avoid having the PCB be generally defaulted to "Component" or "Assembly". + // like "deduplicate" imported STEPs by swapping STEP assembly components with already + // identically named assemblies. So we want to avoid having the PCB be generally defaulted + // to "Component" or "Assembly". Handle( TDataStd_TreeNode ) node; if( m_pcb_label.FindAttribute( XCAFDoc::ShapeRefGUID(), node ) ) { TDF_Label label = node->Father()->Label(); + if( !label.IsNull() ) { wxString pcbName = wxString::Format( wxT( "%s PCB" ), m_pcbName ); @@ -895,7 +894,6 @@ bool PCBMODEL::CreatePCB() } } - // color the PCB Handle( XCAFDoc_ColorTool ) colorTool = XCAFDoc_DocumentTool::ColorTool( m_doc->Main () ); Quantity_Color color( m_boardColor[0], m_boardColor[1], m_boardColor[2], Quantity_TOC_RGB ); @@ -914,6 +912,7 @@ bool PCBMODEL::CreatePCB() #if ( defined OCC_VERSION_HEX ) && ( OCC_VERSION_HEX > 0x070101 ) m_assy->UpdateAssemblies(); #endif + return true; } @@ -938,8 +937,10 @@ bool PCBMODEL::WriteIGES( const wxString& aFileName ) IGESData_GlobalSection header = writer.Model()->GlobalSection(); header.SetFileName( new TCollection_HAsciiString( fn.GetFullName().ToAscii() ) ); header.SetSendName( new TCollection_HAsciiString( "KiCad electronic assembly" ) ); - header.SetAuthorName( new TCollection_HAsciiString( Interface_Static::CVal( "write.iges.header.author" ) ) ); - header.SetCompanyName( new TCollection_HAsciiString( Interface_Static::CVal( "write.iges.header.company" ) ) ); + header.SetAuthorName( + new TCollection_HAsciiString( Interface_Static::CVal( "write.iges.header.author" ) ) ); + header.SetCompanyName( + new TCollection_HAsciiString( Interface_Static::CVal( "write.iges.header.company" ) ) ); writer.Model()->SetGlobalSection( header ); if( Standard_False == writer.Perform( m_doc, aFileName.c_str() ) ) @@ -959,6 +960,7 @@ bool PCBMODEL::WriteSTEP( const wxString& aFileName ) aFileName ) ); return false; } + wxFileName fn( aFileName ); STEPCAFControl_Writer writer; @@ -1314,11 +1316,11 @@ bool PCBMODEL::readIGES( Handle( TDocStd_Document )& doc, const char* fname ) return false; // set other translation options - reader.SetColorMode(true); // use model colors - reader.SetNameMode(false); // don't use IGES label names - reader.SetLayerMode(false); // ignore LAYER data + reader.SetColorMode( true ); // use model colors + reader.SetNameMode( false ); // don't use IGES label names + reader.SetLayerMode( false ); // ignore LAYER data - if ( !reader.Transfer( doc ) ) + if( !reader.Transfer( doc ) ) { doc->Close(); return false; @@ -1335,7 +1337,7 @@ bool PCBMODEL::readIGES( Handle( TDocStd_Document )& doc, const char* fname ) } -bool PCBMODEL::readSTEP( Handle(TDocStd_Document)& doc, const char* fname ) +bool PCBMODEL::readSTEP( Handle( TDocStd_Document )& doc, const char* fname ) { STEPCAFControl_Reader reader; IFSelect_ReturnStatus stat = reader.ReadFile( fname ); @@ -1352,11 +1354,11 @@ bool PCBMODEL::readSTEP( Handle(TDocStd_Document)& doc, const char* fname ) return false; // set other translation options - reader.SetColorMode(true); // use model colors - reader.SetNameMode(false); // don't use label names - reader.SetLayerMode(false); // ignore LAYER data + reader.SetColorMode( true ); // use model colors + reader.SetNameMode( false ); // don't use label names + reader.SetLayerMode( false ); // ignore LAYER data - if ( !reader.Transfer( doc ) ) + if( !reader.Transfer( doc ) ) { doc->Close(); return false; @@ -1385,14 +1387,14 @@ TDF_Label PCBMODEL::transferModel( Handle( TDocStd_Document )& source, BRepBuilderAPI_GTransform brep( scale_transform ); // s_assy = shape tool for the source - Handle(XCAFDoc_ShapeTool) s_assy = XCAFDoc_DocumentTool::ShapeTool ( source->Main() ); + Handle(XCAFDoc_ShapeTool) s_assy = XCAFDoc_DocumentTool::ShapeTool( source->Main() ); // retrieve all free shapes within the assembly TDF_LabelSequence frshapes; s_assy->GetFreeShapes( frshapes ); // d_assy = shape tool for the destination - Handle(XCAFDoc_ShapeTool) d_assy = XCAFDoc_DocumentTool::ShapeTool ( dest->Main() ); + Handle( XCAFDoc_ShapeTool ) d_assy = XCAFDoc_DocumentTool::ShapeTool ( dest->Main() ); // create a new shape within the destination and set the assembly tool to point to it TDF_Label component = d_assy->NewShape(); @@ -1406,14 +1408,14 @@ TDF_Label PCBMODEL::transferModel( Handle( TDocStd_Document )& source, while( id <= nshapes ) { - TopoDS_Shape shape = s_assy->GetShape( frshapes.Value(id) ); + TopoDS_Shape shape = s_assy->GetShape( frshapes.Value( id ) ); - if ( !shape.IsNull() ) + if( !shape.IsNull() ) { brep.Perform( shape, Standard_False ); TopoDS_Shape scaled_shape; - if ( brep.IsDone() ) + if( brep.IsDone() ) { scaled_shape = brep.Shape(); } @@ -1446,9 +1448,9 @@ TDF_Label PCBMODEL::transferModel( Handle( TDocStd_Document )& source, dcolor->SetColor( dtop.Current(), face_color, XCAFDoc_ColorSurf ); } } - else if( scolor->GetColor( stop.Current(), XCAFDoc_ColorSurf, face_color ) - || scolor->GetColor( stop.Current(), XCAFDoc_ColorGen, face_color ) - || scolor->GetColor( stop.Current(), XCAFDoc_ColorCurv, face_color ) ) + else if( scolor->GetColor( stop.Current(), XCAFDoc_ColorSurf, face_color ) + || scolor->GetColor( stop.Current(), XCAFDoc_ColorGen, face_color ) + || scolor->GetColor( stop.Current(), XCAFDoc_ColorCurv, face_color ) ) { dcolor->SetColor( dtop.Current(), face_color, XCAFDoc_ColorSurf ); } @@ -1477,9 +1479,9 @@ TDF_Label PCBMODEL::transferModel( Handle( TDocStd_Document )& source, dcolor->SetColor( dtop.Current(), face_color, XCAFDoc_ColorGen ); } } - else if( scolor->GetColor( stop.Current(), XCAFDoc_ColorSurf, face_color ) - || scolor->GetColor( stop.Current(), XCAFDoc_ColorGen, face_color ) - || scolor->GetColor( stop.Current(), XCAFDoc_ColorCurv, face_color ) ) + else if( scolor->GetColor( stop.Current(), XCAFDoc_ColorSurf, face_color ) + || scolor->GetColor( stop.Current(), XCAFDoc_ColorGen, face_color ) + || scolor->GetColor( stop.Current(), XCAFDoc_ColorCurv, face_color ) ) { dcolor->SetColor( dtop.Current(), face_color, XCAFDoc_ColorSurf ); } diff --git a/utils/kicad2step/pcb/oce_utils.h b/utils/kicad2step/pcb/oce_utils.h index 027ddd5cfd..2980674a09 100644 --- a/utils/kicad2step/pcb/oce_utils.h +++ b/utils/kicad2step/pcb/oce_utils.h @@ -97,9 +97,9 @@ public: // add a component at the given position and orientation bool AddComponent( const std::string& aFileName, const std::string& aRefDes, - bool aBottom, DOUBLET aPosition, double aRotation, - TRIPLET aOffset, TRIPLET aOrientation, TRIPLET aScale, - bool aSubstituteModels = true ); + bool aBottom, DOUBLET aPosition, double aRotation, + TRIPLET aOffset, TRIPLET aOrientation, TRIPLET aScale, + bool aSubstituteModels = true ); void SetBoardColor( double r, double g, double b ); @@ -167,7 +167,9 @@ private: std::list m_curves; std::vector m_cutouts; - wxString m_pcbName; // name of the PCB, which will most likely be the file name of the path + + /// Name of the PCB, which will most likely be the file name of the path. + wxString m_pcbName; }; #endif // OCE_VIS_OCE_UTILS_H