Always allow blind/buried/micro vias
Removes a nanny setting that prevented the use of blind/buried/micro-vias without a checkbox. If the designer does not want microvias in their board, they simply do not place microvias.
This commit is contained in:
parent
3d1d432c5e
commit
a9a5136c1c
|
@ -674,8 +674,6 @@ public:
|
|||
*/
|
||||
TEARDROP_PARAMETERS_LIST m_TeardropParamsList;
|
||||
|
||||
bool m_MicroViasAllowed; ///< true to allow micro vias
|
||||
bool m_BlindBuriedViaAllowed; ///< true to allow blind/buried vias
|
||||
VIATYPE m_CurrentViaType; ///< (VIA_BLIND_BURIED, VIA_THROUGH, VIA_MICROVIA)
|
||||
|
||||
bool m_UseConnectedTrackWidth; // use width of existing track when creating a new,
|
||||
|
|
|
@ -67,9 +67,6 @@ BOARD_DESIGN_SETTINGS::BOARD_DESIGN_SETTINGS( JSON_SETTINGS* aParent, const std:
|
|||
m_UseConnectedTrackWidth = false;
|
||||
m_TempOverrideTrackWidth = false;
|
||||
|
||||
m_BlindBuriedViaAllowed = false;
|
||||
m_MicroViasAllowed = false;
|
||||
|
||||
// First is always the reference designator
|
||||
m_DefaultFPTextItems.emplace_back( wxT( "REF**" ), true, F_SilkS );
|
||||
// Second is always the value
|
||||
|
@ -223,10 +220,6 @@ BOARD_DESIGN_SETTINGS::BOARD_DESIGN_SETTINGS( JSON_SETTINGS* aParent, const std:
|
|||
// project. Going forward, the import feature will just import from other board files (since
|
||||
// we could have multi-board projects in the future anyway) so this functionality is dropped.
|
||||
|
||||
m_params.emplace_back( new PARAM<bool>( "rules.allow_microvias", &m_MicroViasAllowed, false ) );
|
||||
|
||||
m_params.emplace_back( new PARAM<bool>( "rules.allow_blind_buried_vias",
|
||||
&m_BlindBuriedViaAllowed, false ) );
|
||||
|
||||
m_params.emplace_back( new PARAM<bool>( "rules.use_height_for_length_calcs",
|
||||
&m_UseHeightForLengthCalcs, true ) );
|
||||
|
@ -821,8 +814,6 @@ void BOARD_DESIGN_SETTINGS::initFromOther( const BOARD_DESIGN_SETTINGS& aOther )
|
|||
m_TrackWidthList = aOther.m_TrackWidthList;
|
||||
m_ViasDimensionsList = aOther.m_ViasDimensionsList;
|
||||
m_DiffPairDimensionsList = aOther.m_DiffPairDimensionsList;
|
||||
m_MicroViasAllowed = aOther.m_MicroViasAllowed;
|
||||
m_BlindBuriedViaAllowed = aOther.m_BlindBuriedViaAllowed;
|
||||
m_CurrentViaType = aOther.m_CurrentViaType;
|
||||
m_UseConnectedTrackWidth = aOther.m_UseConnectedTrackWidth;
|
||||
m_MinClearance = aOther.m_MinClearance;
|
||||
|
|
|
@ -69,8 +69,6 @@ bool PANEL_SETUP_CONSTRAINTS::TransferDataToWindow()
|
|||
StringFromValue( m_Frame->GetUserUnits(), ARC_HIGH_DEF, true ) );
|
||||
m_stCircleToPolyWarning->SetLabel( msg );
|
||||
|
||||
m_OptAllowBlindBuriedVias->SetValue( m_BrdSettings->m_BlindBuriedViaAllowed );
|
||||
m_OptAllowMicroVias->SetValue( m_BrdSettings->m_MicroViasAllowed );
|
||||
m_useHeightForLengthCalcs->SetValue( m_BrdSettings->m_UseHeightForLengthCalcs );
|
||||
|
||||
m_maxError.SetValue( m_BrdSettings->m_MaxError );
|
||||
|
@ -131,8 +129,6 @@ bool PANEL_SETUP_CONSTRAINTS::TransferDataFromWindow()
|
|||
|
||||
// These are all stored in project file, not board, so no need for OnModify()
|
||||
|
||||
m_BrdSettings->m_BlindBuriedViaAllowed = m_OptAllowBlindBuriedVias->GetValue();
|
||||
m_BrdSettings->m_MicroViasAllowed = m_OptAllowMicroVias->GetValue();
|
||||
m_BrdSettings->m_UseHeightForLengthCalcs = m_useHeightForLengthCalcs->GetValue();
|
||||
|
||||
m_BrdSettings->m_MaxError = Clamp<int>( IU_PER_MM * MINIMUM_ERROR_SIZE_MM,
|
||||
|
@ -186,8 +182,6 @@ bool PANEL_SETUP_CONSTRAINTS::Show( bool aShow )
|
|||
m_bitmapHoleClearance->SetBitmap( KiBitmap( BITMAPS::hole_to_copper_clearance ) );
|
||||
m_bitmapMinHoleClearance->SetBitmap( KiBitmap( BITMAPS::hole_to_hole_clearance ) );
|
||||
m_bitmapEdgeClearance->SetBitmap( KiBitmap( BITMAPS::edge_to_copper_clearance ) );
|
||||
m_bitmapBlindBuried->SetBitmap( KiBitmap( BITMAPS::via_buried ) );
|
||||
m_bitmap_uVia->SetBitmap( KiBitmap( BITMAPS::via_microvia ) );
|
||||
|
||||
Layout();
|
||||
}
|
||||
|
|
|
@ -19,141 +19,6 @@ PANEL_SETUP_CONSTRAINTS_BASE::PANEL_SETUP_CONSTRAINTS_BASE( wxWindow* parent, wx
|
|||
wxBoxSizer* bScrolledSizer;
|
||||
bScrolledSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
wxBoxSizer* sbFeatureRules;
|
||||
sbFeatureRules = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_staticText26 = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Allowed features"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText26->Wrap( -1 );
|
||||
sbFeatureRules->Add( m_staticText26, 0, wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
wxFlexGridSizer* fgSizerViaOpt;
|
||||
fgSizerViaOpt = new wxFlexGridSizer( 0, 2, 0, 0 );
|
||||
fgSizerViaOpt->SetFlexibleDirection( wxBOTH );
|
||||
fgSizerViaOpt->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_bitmapBlindBuried = new wxStaticBitmap( m_scrolledWindow, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerViaOpt->Add( m_bitmapBlindBuried, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_OptAllowBlindBuriedVias = new wxCheckBox( m_scrolledWindow, wxID_ANY, _("Allow blind/buried vias"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerViaOpt->Add( m_OptAllowBlindBuriedVias, 0, wxALIGN_CENTER_VERTICAL|wxALL, 6 );
|
||||
|
||||
m_bitmap_uVia = new wxStaticBitmap( m_scrolledWindow, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerViaOpt->Add( m_bitmap_uVia, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_OptAllowMicroVias = new wxCheckBox( m_scrolledWindow, wxID_ANY, _("Allow micro vias (uVias)"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerViaOpt->Add( m_OptAllowMicroVias, 0, wxALIGN_CENTER_VERTICAL|wxALL, 6 );
|
||||
|
||||
|
||||
sbFeatureRules->Add( fgSizerViaOpt, 0, wxEXPAND|wxTOP, 5 );
|
||||
|
||||
wxBoxSizer* bSizerArcToPoly;
|
||||
bSizerArcToPoly = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_staticline2 = new wxStaticLine( m_scrolledWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
bSizerArcToPoly->Add( m_staticline2, 0, wxEXPAND|wxTOP|wxBOTTOM, 12 );
|
||||
|
||||
m_stCircleToPolyOpt = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Arc/circle approximated by segments"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_stCircleToPolyOpt->Wrap( -1 );
|
||||
bSizerArcToPoly->Add( m_stCircleToPolyOpt, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
wxFlexGridSizer* fgSizer2;
|
||||
fgSizer2 = new wxFlexGridSizer( 0, 4, 3, 0 );
|
||||
fgSizer2->AddGrowableCol( 2 );
|
||||
fgSizer2->SetFlexibleDirection( wxBOTH );
|
||||
fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
|
||||
fgSizer2->Add( 15, 0, 0, 0, 5 );
|
||||
|
||||
m_maxErrorTitle = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Max allowed deviation:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_maxErrorTitle->Wrap( -1 );
|
||||
m_maxErrorTitle->SetToolTip( _("This is the maximum distance between a circle and the polygonal shape that approximate it.\nThe error max defines the number of segments of this polygon.") );
|
||||
|
||||
fgSizer2->Add( m_maxErrorTitle, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT|wxLEFT, 5 );
|
||||
|
||||
m_maxErrorCtrl = new wxTextCtrl( m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_maxErrorCtrl->SetToolTip( _("The maximum allowed deviation between a true arc or circle and segments used to approximate it. Smaller values produce smoother graphics at the expense of performance.") );
|
||||
|
||||
fgSizer2->Add( m_maxErrorCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
m_maxErrorUnits = new wxStaticText( m_scrolledWindow, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_maxErrorUnits->Wrap( -1 );
|
||||
fgSizer2->Add( m_maxErrorUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
|
||||
bSizerArcToPoly->Add( fgSizer2, 0, wxEXPAND|wxBOTTOM, 5 );
|
||||
|
||||
m_stCircleToPolyWarning = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Note: zone filling can be slow when < %s."), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_stCircleToPolyWarning->Wrap( -1 );
|
||||
bSizerArcToPoly->Add( m_stCircleToPolyWarning, 0, wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
|
||||
sbFeatureRules->Add( bSizerArcToPoly, 0, wxEXPAND|wxTOP, 5 );
|
||||
|
||||
m_bSizerPolygonFillOption = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_staticline1 = new wxStaticLine( m_scrolledWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
m_bSizerPolygonFillOption->Add( m_staticline1, 0, wxEXPAND|wxTOP|wxBOTTOM, 12 );
|
||||
|
||||
m_stZoneFilledPolysOpt = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Zone fill strategy"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_stZoneFilledPolysOpt->Wrap( -1 );
|
||||
m_bSizerPolygonFillOption->Add( m_stZoneFilledPolysOpt, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
wxBoxSizer* bSizer9;
|
||||
bSizer9 = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_filletBitmap = new wxStaticBitmap( m_scrolledWindow, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer9->Add( m_filletBitmap, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_allowExternalFilletsOpt = new wxCheckBox( m_scrolledWindow, wxID_ANY, _("Allow fillets outside zone outline"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer9->Add( m_allowExternalFilletsOpt, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
m_bSizerPolygonFillOption->Add( bSizer9, 0, wxEXPAND|wxTOP, 7 );
|
||||
|
||||
wxBoxSizer* bSizer111;
|
||||
bSizer111 = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_spokeBitmap = new wxStaticBitmap( m_scrolledWindow, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer111->Add( m_spokeBitmap, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
m_minResolvedSpokesLabel = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Min thermal relief spoke count:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_minResolvedSpokesLabel->Wrap( -1 );
|
||||
bSizer111->Add( m_minResolvedSpokesLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
||||
|
||||
m_minResolvedSpokeCountCtrl = new wxSpinCtrl( m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxSP_ARROW_KEYS, 0, 10, 0 );
|
||||
bSizer111->Add( m_minResolvedSpokeCountCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
m_bSizerPolygonFillOption->Add( bSizer111, 1, wxEXPAND|wxTOP, 5 );
|
||||
|
||||
|
||||
sbFeatureRules->Add( m_bSizerPolygonFillOption, 0, wxEXPAND|wxTOP, 10 );
|
||||
|
||||
wxBoxSizer* bSizer11;
|
||||
bSizer11 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_staticline15 = new wxStaticLine( m_scrolledWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
bSizer11->Add( m_staticline15, 0, wxEXPAND|wxTOP|wxBOTTOM, 12 );
|
||||
|
||||
m_staticText33 = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Length tuning"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText33->Wrap( -1 );
|
||||
bSizer11->Add( m_staticText33, 0, wxALL, 5 );
|
||||
|
||||
m_useHeightForLengthCalcs = new wxCheckBox( m_scrolledWindow, wxID_ANY, _("Include stackup height in track length calculations"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_useHeightForLengthCalcs->SetToolTip( _("When enabled, the distance between copper layers will be included in track length calculations for tracks with vias. When disabled, via stackup height is ignored.") );
|
||||
|
||||
bSizer11->Add( m_useHeightForLengthCalcs, 0, wxALL, 5 );
|
||||
|
||||
|
||||
sbFeatureRules->Add( bSizer11, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bScrolledSizer->Add( sbFeatureRules, 0, wxEXPAND|wxRIGHT, 5 );
|
||||
|
||||
|
||||
bScrolledSizer->Add( 0, 0, 0, wxEXPAND|wxRIGHT|wxLEFT, 20 );
|
||||
|
||||
wxBoxSizer* sbFeatureConstraints;
|
||||
sbFeatureConstraints = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
@ -479,6 +344,114 @@ PANEL_SETUP_CONSTRAINTS_BASE::PANEL_SETUP_CONSTRAINTS_BASE( wxWindow* parent, wx
|
|||
bScrolledSizer->Add( sbFeatureConstraints, 0, wxEXPAND|wxRIGHT, 5 );
|
||||
|
||||
|
||||
bScrolledSizer->Add( 0, 0, 0, wxEXPAND|wxRIGHT|wxLEFT, 20 );
|
||||
|
||||
wxBoxSizer* sbFeatureRules;
|
||||
sbFeatureRules = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxBoxSizer* bSizerArcToPoly;
|
||||
bSizerArcToPoly = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_stCircleToPolyOpt = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Arc/circle approximated by segments"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_stCircleToPolyOpt->Wrap( -1 );
|
||||
bSizerArcToPoly->Add( m_stCircleToPolyOpt, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
wxFlexGridSizer* fgSizer2;
|
||||
fgSizer2 = new wxFlexGridSizer( 0, 4, 3, 0 );
|
||||
fgSizer2->AddGrowableCol( 2 );
|
||||
fgSizer2->SetFlexibleDirection( wxBOTH );
|
||||
fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
|
||||
fgSizer2->Add( 15, 0, 0, 0, 5 );
|
||||
|
||||
m_maxErrorTitle = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Max allowed deviation:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_maxErrorTitle->Wrap( -1 );
|
||||
m_maxErrorTitle->SetToolTip( _("This is the maximum distance between a circle and the polygonal shape that approximate it.\nThe error max defines the number of segments of this polygon.") );
|
||||
|
||||
fgSizer2->Add( m_maxErrorTitle, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT|wxLEFT, 5 );
|
||||
|
||||
m_maxErrorCtrl = new wxTextCtrl( m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_maxErrorCtrl->SetToolTip( _("The maximum allowed deviation between a true arc or circle and segments used to approximate it. Smaller values produce smoother graphics at the expense of performance.") );
|
||||
|
||||
fgSizer2->Add( m_maxErrorCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
m_maxErrorUnits = new wxStaticText( m_scrolledWindow, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_maxErrorUnits->Wrap( -1 );
|
||||
fgSizer2->Add( m_maxErrorUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
|
||||
bSizerArcToPoly->Add( fgSizer2, 0, wxEXPAND|wxBOTTOM, 5 );
|
||||
|
||||
m_stCircleToPolyWarning = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Note: zone filling can be slow when < %s."), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_stCircleToPolyWarning->Wrap( -1 );
|
||||
bSizerArcToPoly->Add( m_stCircleToPolyWarning, 0, wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
|
||||
sbFeatureRules->Add( bSizerArcToPoly, 0, wxEXPAND|wxTOP, 5 );
|
||||
|
||||
m_bSizerPolygonFillOption = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_staticline1 = new wxStaticLine( m_scrolledWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
m_bSizerPolygonFillOption->Add( m_staticline1, 0, wxEXPAND|wxTOP|wxBOTTOM, 12 );
|
||||
|
||||
m_stZoneFilledPolysOpt = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Zone fill strategy"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_stZoneFilledPolysOpt->Wrap( -1 );
|
||||
m_bSizerPolygonFillOption->Add( m_stZoneFilledPolysOpt, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
wxBoxSizer* bSizer9;
|
||||
bSizer9 = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_filletBitmap = new wxStaticBitmap( m_scrolledWindow, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer9->Add( m_filletBitmap, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_allowExternalFilletsOpt = new wxCheckBox( m_scrolledWindow, wxID_ANY, _("Allow fillets outside zone outline"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer9->Add( m_allowExternalFilletsOpt, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
m_bSizerPolygonFillOption->Add( bSizer9, 0, wxEXPAND|wxTOP, 7 );
|
||||
|
||||
wxBoxSizer* bSizer111;
|
||||
bSizer111 = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_spokeBitmap = new wxStaticBitmap( m_scrolledWindow, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer111->Add( m_spokeBitmap, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
m_minResolvedSpokesLabel = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Min thermal relief spoke count:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_minResolvedSpokesLabel->Wrap( -1 );
|
||||
bSizer111->Add( m_minResolvedSpokesLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
||||
|
||||
m_minResolvedSpokeCountCtrl = new wxSpinCtrl( m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), wxSP_ARROW_KEYS, 0, 10, 0 );
|
||||
bSizer111->Add( m_minResolvedSpokeCountCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
m_bSizerPolygonFillOption->Add( bSizer111, 1, wxEXPAND|wxTOP, 5 );
|
||||
|
||||
|
||||
sbFeatureRules->Add( m_bSizerPolygonFillOption, 0, wxEXPAND|wxTOP, 10 );
|
||||
|
||||
wxBoxSizer* bSizer11;
|
||||
bSizer11 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_staticline15 = new wxStaticLine( m_scrolledWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
bSizer11->Add( m_staticline15, 0, wxEXPAND|wxTOP|wxBOTTOM, 12 );
|
||||
|
||||
m_staticText33 = new wxStaticText( m_scrolledWindow, wxID_ANY, _("Length tuning"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText33->Wrap( -1 );
|
||||
bSizer11->Add( m_staticText33, 0, wxALL, 5 );
|
||||
|
||||
m_useHeightForLengthCalcs = new wxCheckBox( m_scrolledWindow, wxID_ANY, _("Include stackup height in track length calculations"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_useHeightForLengthCalcs->SetToolTip( _("When enabled, the distance between copper layers will be included in track length calculations for tracks with vias. When disabled, via stackup height is ignored.") );
|
||||
|
||||
bSizer11->Add( m_useHeightForLengthCalcs, 0, wxALL, 5 );
|
||||
|
||||
|
||||
sbFeatureRules->Add( bSizer11, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bScrolledSizer->Add( sbFeatureRules, 0, wxEXPAND|wxRIGHT, 5 );
|
||||
|
||||
|
||||
bScrolledSizer->Add( 0, 0, 1, wxEXPAND, 0 );
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -20,11 +20,11 @@
|
|||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/statbmp.h>
|
||||
#include <wx/checkbox.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/statline.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/valtext.h>
|
||||
#include <wx/statline.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/checkbox.h>
|
||||
#include <wx/spinctrl.h>
|
||||
#include <wx/scrolwin.h>
|
||||
#include <wx/panel.h>
|
||||
|
@ -39,28 +39,6 @@ class PANEL_SETUP_CONSTRAINTS_BASE : public wxPanel
|
|||
private:
|
||||
|
||||
protected:
|
||||
wxStaticText* m_staticText26;
|
||||
wxStaticBitmap* m_bitmapBlindBuried;
|
||||
wxCheckBox* m_OptAllowBlindBuriedVias;
|
||||
wxStaticBitmap* m_bitmap_uVia;
|
||||
wxCheckBox* m_OptAllowMicroVias;
|
||||
wxStaticLine* m_staticline2;
|
||||
wxStaticText* m_stCircleToPolyOpt;
|
||||
wxStaticText* m_maxErrorTitle;
|
||||
wxTextCtrl* m_maxErrorCtrl;
|
||||
wxStaticText* m_maxErrorUnits;
|
||||
wxStaticText* m_stCircleToPolyWarning;
|
||||
wxBoxSizer* m_bSizerPolygonFillOption;
|
||||
wxStaticLine* m_staticline1;
|
||||
wxStaticText* m_stZoneFilledPolysOpt;
|
||||
wxStaticBitmap* m_filletBitmap;
|
||||
wxCheckBox* m_allowExternalFilletsOpt;
|
||||
wxStaticBitmap* m_spokeBitmap;
|
||||
wxStaticText* m_minResolvedSpokesLabel;
|
||||
wxSpinCtrl* m_minResolvedSpokeCountCtrl;
|
||||
wxStaticLine* m_staticline15;
|
||||
wxStaticText* m_staticText33;
|
||||
wxCheckBox* m_useHeightForLengthCalcs;
|
||||
wxStaticText* m_staticText23;
|
||||
wxStaticBitmap* m_bitmapClearance;
|
||||
wxStaticText* m_clearanceTitle;
|
||||
|
@ -130,6 +108,22 @@ class PANEL_SETUP_CONSTRAINTS_BASE : public wxPanel
|
|||
wxStaticText* m_textThicknessLabel;
|
||||
wxTextCtrl* m_textThicknessCtrl;
|
||||
wxStaticText* m_textThicknessUnits;
|
||||
wxStaticText* m_stCircleToPolyOpt;
|
||||
wxStaticText* m_maxErrorTitle;
|
||||
wxTextCtrl* m_maxErrorCtrl;
|
||||
wxStaticText* m_maxErrorUnits;
|
||||
wxStaticText* m_stCircleToPolyWarning;
|
||||
wxBoxSizer* m_bSizerPolygonFillOption;
|
||||
wxStaticLine* m_staticline1;
|
||||
wxStaticText* m_stZoneFilledPolysOpt;
|
||||
wxStaticBitmap* m_filletBitmap;
|
||||
wxCheckBox* m_allowExternalFilletsOpt;
|
||||
wxStaticBitmap* m_spokeBitmap;
|
||||
wxStaticText* m_minResolvedSpokesLabel;
|
||||
wxSpinCtrl* m_minResolvedSpokeCountCtrl;
|
||||
wxStaticLine* m_staticline15;
|
||||
wxStaticText* m_staticText33;
|
||||
wxCheckBox* m_useHeightForLengthCalcs;
|
||||
|
||||
public:
|
||||
wxScrolledWindow* m_scrolledWindow;
|
||||
|
|
|
@ -220,24 +220,6 @@ void DRC_ENGINE::loadImplicitRules()
|
|||
uViaDiameterConstraint.Value().SetMin( bds.m_MicroViasMinSize );
|
||||
uViaRule->AddConstraint( uViaDiameterConstraint );
|
||||
|
||||
if( !bds.m_MicroViasAllowed )
|
||||
{
|
||||
DRC_CONSTRAINT disallowConstraint( DISALLOW_CONSTRAINT );
|
||||
disallowConstraint.m_DisallowFlags = DRC_DISALLOW_MICRO_VIAS;
|
||||
uViaRule->AddConstraint( disallowConstraint );
|
||||
}
|
||||
|
||||
if( !bds.m_BlindBuriedViaAllowed )
|
||||
{
|
||||
std::shared_ptr<DRC_RULE> bbViaRule = createImplicitRule( _( "board setup constraints" ) );
|
||||
|
||||
bbViaRule->m_Condition = new DRC_RULE_CONDITION( wxT( "A.Via_Type == 'Blind/buried'" ) );
|
||||
|
||||
DRC_CONSTRAINT disallowConstraint( DISALLOW_CONSTRAINT );
|
||||
disallowConstraint.m_DisallowFlags = DRC_DISALLOW_BB_VIAS;
|
||||
bbViaRule->AddConstraint( disallowConstraint );
|
||||
}
|
||||
|
||||
// 3) per-netclass rules
|
||||
|
||||
std::vector<std::shared_ptr<DRC_RULE>> netclassClearanceRules;
|
||||
|
|
|
@ -2833,12 +2833,10 @@ void ALTIUM_PCB::ParseVias6Data( const ALTIUM_COMPOUND_FILE& aAltiumPcbFile,
|
|||
else if( ( !start_layer_outside ) && ( !end_layer_outside ) )
|
||||
{
|
||||
via->SetViaType( VIATYPE::BLIND_BURIED );
|
||||
m_board->GetDesignSettings().m_BlindBuriedViaAllowed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
via->SetViaType( VIATYPE::MICROVIA ); // TODO: always a microvia?
|
||||
m_board->GetDesignSettings().m_MicroViasAllowed = true;
|
||||
}
|
||||
|
||||
PCB_LAYER_ID start_klayer = GetKicadLayer( elem.layer_start );
|
||||
|
|
|
@ -1995,13 +1995,13 @@ void PCB_PARSER::parseSetup()
|
|||
break;
|
||||
|
||||
case T_uvias_allowed:
|
||||
designSettings.m_MicroViasAllowed = parseBool();
|
||||
parseBool();
|
||||
m_board->m_LegacyDesignSettingsLoaded = true;
|
||||
NeedRIGHT();
|
||||
break;
|
||||
|
||||
case T_blind_buried_vias_allowed:
|
||||
designSettings.m_BlindBuriedViaAllowed = parseBool();
|
||||
parseBool();
|
||||
m_board->m_LegacyDesignSettingsLoaded = true;
|
||||
NeedRIGHT();
|
||||
break;
|
||||
|
|
|
@ -988,8 +988,7 @@ void LEGACY_PLUGIN::loadSETUP()
|
|||
}
|
||||
else if( TESTLINE( "MicroViasAllowed" ) )
|
||||
{
|
||||
int tmp = intParse( line + SZ( "MicroViasAllowed" ) );
|
||||
bds.m_MicroViasAllowed = tmp;
|
||||
intParse( line + SZ( "MicroViasAllowed" ) );
|
||||
}
|
||||
else if( TESTLINE( "TextPcbWidth" ) )
|
||||
{
|
||||
|
|
|
@ -879,53 +879,6 @@ int ROUTER_TOOL::handleLayerSwitch( const TOOL_EVENT& aEvent, bool aForceVia )
|
|||
// fixme: P&S supports more than one fixed layer pair. Update the dialog?
|
||||
sizes.ClearLayerPairs();
|
||||
|
||||
if( !m_router->IsPlacingVia() )
|
||||
{
|
||||
// Cannot place microvias or blind vias if not allowed (obvious)
|
||||
if( ( viaType == VIATYPE::BLIND_BURIED ) && ( !bds.m_BlindBuriedViaAllowed ) )
|
||||
{
|
||||
WX_INFOBAR* infobar = frame()->GetInfoBar();
|
||||
wxHyperlinkCtrl* button = new wxHyperlinkCtrl( infobar, wxID_ANY,
|
||||
_( "Show board setup" ),
|
||||
wxEmptyString );
|
||||
|
||||
button->Bind( wxEVT_COMMAND_HYPERLINK, std::function<void( wxHyperlinkEvent& aEvent )>(
|
||||
[&]( wxHyperlinkEvent& aEvent )
|
||||
{
|
||||
getEditFrame<PCB_EDIT_FRAME>()->ShowBoardSetupDialog( _( "Constraints" ) );
|
||||
} ) );
|
||||
|
||||
infobar->RemoveAllButtons();
|
||||
infobar->AddButton( button );
|
||||
|
||||
infobar->ShowMessageFor( _( "Blind/buried vias must first be enabled in "
|
||||
"Board Setup > Design Rules > Constraints." ),
|
||||
10000, wxICON_ERROR, WX_INFOBAR::MESSAGE_TYPE::DRC_VIOLATION );
|
||||
return false;
|
||||
}
|
||||
|
||||
if( ( viaType == VIATYPE::MICROVIA ) && ( !bds.m_MicroViasAllowed ) )
|
||||
{
|
||||
WX_INFOBAR* infobar = frame()->GetInfoBar();
|
||||
wxHyperlinkCtrl* button = new wxHyperlinkCtrl( infobar, wxID_ANY,
|
||||
_( "Show board setup" ), wxEmptyString );
|
||||
|
||||
button->Bind( wxEVT_COMMAND_HYPERLINK, std::function<void( wxHyperlinkEvent& aEvent )>(
|
||||
[&]( wxHyperlinkEvent& aEvent )
|
||||
{
|
||||
getEditFrame<PCB_EDIT_FRAME>()->ShowBoardSetupDialog( _( "Constraints" ) );
|
||||
} ) );
|
||||
|
||||
infobar->RemoveAllButtons();
|
||||
infobar->AddButton( button );
|
||||
|
||||
infobar->ShowMessageFor( _( "Microvias must first be enabled in "
|
||||
"Board Setup > Design Rules > Constraints." ),
|
||||
10000, wxICON_ERROR, WX_INFOBAR::MESSAGE_TYPE::DRC_VIOLATION );
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Convert blind/buried via to a through hole one, if it goes through all layers
|
||||
if( viaType == VIATYPE::BLIND_BURIED
|
||||
&& ( ( targetLayer == B_Cu && currentLayer == F_Cu )
|
||||
|
|
Loading…
Reference in New Issue