|
KiCad PCB EDA Suite
|
#include <board_commit.h>#include <tools/pcb_actions.h>#include <tools/pcb_selection.h>#include <tools/pcb_selection_tool.h>#include <tool/action_menu.h>#include <tool/conditional_menu.h>#include <tool/selection_conditions.h>#include <tool/tool_menu.h>#include <bitmaps.h>#include <eda_group.h>#include <dialogs/dialog_multichannel_generate_rule_areas.h>#include <dialogs/dialog_multichannel_repeat_layout.h>#include "multichannel_tool.h"#include <pcbexpr_evaluator.h>#include <zone.h>#include <board.h>#include <netinfo.h>#include <board_design_settings.h>#include <geometry/convex_hull.h>#include <geometry/shape_utils.h>#include <pcb_group.h>#include <pcb_generator.h>#include <footprint.h>#include <pad.h>#include <pcb_text.h>#include <component_classes/component_class.h>#include <connectivity/connectivity_algo.h>#include <connectivity/connectivity_data.h>#include <connectivity/topo_match.h>#include <algorithm>#include <pcb_track.h>#include <tool/tool_manager.h>#include <tools/pcb_picker_tool.h>#include <tools/generator_tool.h>#include <router/router_tool.h>#include <router/pns_router.h>#include <geometry/shape_rect.h>#include <scoped_set_reset.h>#include <trigo.h>#include <chrono>#include <future>#include <core/profile.h>#include <core/raii.h>#include <widgets/wx_progress_reporters.h>#include <string_utils.h>#include <wx/log.h>#include <wx/richmsgdlg.h>#include <pgm_base.h>Go to the source code of this file.
Classes | |
| class | MULTICHANNEL_CONTEXT_MENU |
| struct | FLAT_MATCHER |
Macros | |
| #define | MULTICHANNEL_EXTRA_DEBUG |
Functions | |
| static wxString | FormatComponentList (const std::set< FOOTPRINT * > &aComponents) |
| static wxString | JoinMismatchReasons (const std::vector< wxString > &aReasons) |
| static void | ShowTopologyMismatchReasons (wxWindow *aParent, const wxString &aSummary, const std::vector< wxString > &aReasons) |
| static void | collectGroupFootprints (EDA_GROUP *aGroup, std::set< FOOTPRINT * > &aOut) |
| static void | collectGroupBoardItems (EDA_GROUP *aGroup, std::set< BOARD_ITEM * > &aOut) |
| static EDA_GROUP * | linkedChannelGroup (const BOARD *aBoard, const RULE_AREA *aArea) |
| static void | makePlacementArea (ZONE *aZone, const SHAPE_LINE_CHAIN &aOutline) |
| static bool | outlinesOverlap (const SHAPE_POLY_SET &aA, const SHAPE_POLY_SET &aB) |
| static const std::pair< FOOTPRINT *const, FOOTPRINT * > & | anchorPair (const TMATCH::COMPONENT_MATCHES &aMatches, const KIID &aAnchor) |
| static SHAPE_LINE_CHAIN | repeatedOutline (const RULE_AREA *aRef, const RULE_AREA *aTarget, const KIID &aAnchor, const TMATCH::COMPONENT_MATCHES &aMatches, VECTOR2I &aDisp, EDA_ANGLE &aRot) |
| static std::set< ZONE * > | linkedAreasIn (const SELECTION &aSelection) |
| static std::vector< wxString > | getParentSheetPaths (const wxString &aSheetName) |
| static bool | isChannelNet (const std::vector< FOOTPRINT * > &aOwners, const std::set< FOOTPRINT * > &aChannel) |
| static std::set< int > | channelNets (const std::map< int, std::vector< FOOTPRINT * > > &aNetOwners, const std::set< FOOTPRINT * > &aChannel) |
| static void | stageAddToGroup (BOARD_COMMIT &aCommit, EDA_GROUP *aGroup, BOARD_ITEM *aItem) |
| static std::set< int > | padNets (const FOOTPRINT *aFp, const std::set< int > &aAmong) |
| static std::vector< TMATCH::COMPONENT_MATCHES > | matchSheetInstances (BOARD *aBoard, const std::set< FOOTPRINT * > &aRef) |
| static std::map< int, std::vector< FOOTPRINT * > > | buildNetOwners (const BOARD *aBoard) |
| static bool | matchBySymbolInstancePath (const std::set< FOOTPRINT * > &aRef, const std::set< FOOTPRINT * > &aTarget, TMATCH::COMPONENT_MATCHES &aResult) |
Variables | |
| static const wxString | traceMultichannelTool = wxT( "MULTICHANNEL_TOOL" ) |
| #define MULTICHANNEL_EXTRA_DEBUG |
Definition at line 75 of file multichannel_tool.cpp.
|
static |
Definition at line 253 of file multichannel_tool.cpp.
Referenced by MULTICHANNEL_TOOL::applySelectionRepeat(), MULTICHANNEL_TOOL::linkAreas(), and repeatedOutline().
Definition at line 1358 of file multichannel_tool.cpp.
References BOARD::Footprints(), and pad.
Referenced by MULTICHANNEL_TOOL::ExpandToMatchingTopology(), and MULTICHANNEL_TOOL::findMatches().
|
static |
Definition at line 1100 of file multichannel_tool.cpp.
References isChannelNet().
Referenced by MULTICHANNEL_TOOL::AutogenerateRuleAreas(), and MULTICHANNEL_TOOL::findMatches().
|
static |
Definition at line 173 of file multichannel_tool.cpp.
References collectGroupBoardItems(), EDA_GROUP::GetItems(), and PCB_GROUP_T.
Referenced by MULTICHANNEL_TOOL::AutogenerateRuleAreas(), collectGroupBoardItems(), MULTICHANNEL_TOOL::copyRuleAreaContents(), MULTICHANNEL_TOOL::findOtherItemsInRuleArea(), MULTICHANNEL_TOOL::findRoutingInRuleArea(), and MULTICHANNEL_TOOL::StartRepeatFromSelection().
Definition at line 161 of file multichannel_tool.cpp.
References collectGroupFootprints(), EDA_GROUP::GetItems(), PCB_FOOTPRINT_T, and PCB_GROUP_T.
Referenced by collectGroupFootprints(), MULTICHANNEL_TOOL::expandSelection(), and MULTICHANNEL_TOOL::queryComponentsInGroup().
|
static |
Definition at line 80 of file multichannel_tool.cpp.
References _, AccumulateDescription(), and result.
Referenced by MULTICHANNEL_TOOL::resolveConnectionTopology().
|
static |
Definition at line 821 of file multichannel_tool.cpp.
Referenced by MULTICHANNEL_TOOL::GeneratePotentialRuleAreas().
|
static |
Definition at line 1094 of file multichannel_tool.cpp.
Referenced by channelNets(), MULTICHANNEL_TOOL::copyRuleAreaContents(), and MULTICHANNEL_TOOL::findMatches().
|
static |
Definition at line 133 of file multichannel_tool.cpp.
References text.
Referenced by MULTICHANNEL_TOOL::RepeatLayout(), ShowTopologyMismatchReasons(), and MULTICHANNEL_TOOL::UpdateLinkedLayouts().
Definition at line 286 of file multichannel_tool.cpp.
References ZONE::GetIsRuleArea(), ZONE::GetLinkSet(), group, niluuid, PCB_GROUP_T, and PCB_ZONE_T.
Referenced by MULTICHANNEL_CONTEXT_MENU::MULTICHANNEL_CONTEXT_MENU(), MULTICHANNEL_TOOL::unlinkLayout(), and MULTICHANNEL_TOOL::updateLinkedLayouts().
Definition at line 187 of file multichannel_tool.cpp.
References DESIGN_BLOCK, ZONE::GetLinkSet(), EDA_ITEM::GetParentGroup(), ZONE::GetRepeatOptions(), REPEAT_LAYOUT_OPTIONS::m_groupItems, RULE_AREA::m_sourceType, EDA_ITEM::m_Uuid, RULE_AREA::m_zone, niluuid, and BOARD::ResolveItem().
Referenced by MULTICHANNEL_TOOL::copyRuleAreaContents(), MULTICHANNEL_TOOL::findOtherItemsInRuleArea(), MULTICHANNEL_TOOL::findRepeatRouting(), MULTICHANNEL_TOOL::findRoutingInRuleArea(), and MULTICHANNEL_TOOL::UpdateLinkedLayouts().
|
static |
Definition at line 224 of file multichannel_tool.cpp.
References ZONE::AddPolygon(), LSET::AllCuMask(), NO_HATCH, ZONE::SetDoNotAllowFootprints(), ZONE::SetDoNotAllowPads(), ZONE::SetDoNotAllowTracks(), ZONE::SetDoNotAllowVias(), ZONE::SetDoNotAllowZoneFills(), ZONE::SetHatchStyle(), ZONE::SetIsRuleArea(), ZONE::SetLayerSet(), and ZONE::SetPlacementAreaEnabled().
Referenced by MULTICHANNEL_TOOL::AutogenerateRuleAreas(), and MULTICHANNEL_TOOL::DiscoverRepeatCandidates().
|
static |
Definition at line 3895 of file multichannel_tool.cpp.
References TMATCH::CommonPathTailLength(), FOOTPRINT::GetFPID(), FOOTPRINT::Pads(), and result.
Referenced by MULTICHANNEL_TOOL::resolveConnectionTopology().
|
static |
Definition at line 1149 of file multichannel_tool.cpp.
References BOARD::Footprints(), path, and result.
Referenced by MULTICHANNEL_TOOL::findMatches().
|
static |
Definition at line 240 of file multichannel_tool.cpp.
References SHAPE_POLY_SET::BBox(), SHAPE_POLY_SET::BooleanIntersection(), BOX2< Vec >::Intersects(), and SHAPE_POLY_SET::IsEmpty().
Referenced by MULTICHANNEL_TOOL::UpdateLinkedLayouts().
|
static |
Definition at line 1134 of file multichannel_tool.cpp.
References pad, and FOOTPRINT::Pads().
Referenced by MULTICHANNEL_TOOL::findMatches().
|
static |
Definition at line 262 of file multichannel_tool.cpp.
References anchorPair(), ANGLE_0, SHAPE_POLY_SET::COutline(), RULE_AREA::m_center, RULE_AREA::m_zone, SHAPE_LINE_CHAIN::Move(), niluuid, ZONE::Outline(), SHAPE_LINE_CHAIN::Rotate(), and RotatePoint().
Referenced by MULTICHANNEL_TOOL::copyRuleAreaContents(), MULTICHANNEL_TOOL::UpdateLinkedLayouts(), and MULTICHANNEL_TOOL::updateSelectionCore().
|
static |
Definition at line 149 of file multichannel_tool.cpp.
References _, and JoinMismatchReasons().
Referenced by MULTICHANNEL_TOOL::RepeatLayout(), and MULTICHANNEL_TOOL::ShowMismatchDetails().
|
static |
Definition at line 1119 of file multichannel_tool.cpp.
References EDA_GROUP::AddItem(), EDA_GROUP::AsEdaItem(), EDA_ITEM::GetParentGroup(), COMMIT::Modify(), NO_RECURSE, PCB_GENERATOR_T, and EDA_ITEM::Type().
Referenced by MULTICHANNEL_TOOL::applyRepeat(), and MULTICHANNEL_TOOL::applySelectionRepeat().
|
static |
Definition at line 77 of file multichannel_tool.cpp.
Referenced by MULTICHANNEL_TOOL::applyRepeat(), MULTICHANNEL_TOOL::AutogenerateRuleAreas(), MULTICHANNEL_TOOL::copyRuleAreaContents(), MULTICHANNEL_TOOL::DiscoverRepeatCandidates(), MULTICHANNEL_TOOL::findComponentsInRuleArea(), MULTICHANNEL_TOOL::FindExistingRuleAreas(), MULTICHANNEL_TOOL::findOtherItemsInRuleArea(), MULTICHANNEL_TOOL::findRoutingInRuleArea(), MULTICHANNEL_TOOL::GeneratePotentialRuleAreas(), MULTICHANNEL_TOOL::resolveConnectionTopology(), and MULTICHANNEL_TOOL::UpdateRepeatPreview().