KiCad PCB EDA Suite
Loading...
Searching...
No Matches
altium_pcb.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2019-2020 Thomas Pointhuber <[email protected]>
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, you may find one here:
19 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20 * or you may search the http://www.gnu.org website for the version 2 license,
21 * or you may write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
25#ifndef ALTIUM_PCB_H
26#define ALTIUM_PCB_H
27
28#include <functional>
29#include <layer_ids.h>
30#include <vector>
32
33
34#include <altium_parser_pcb.h>
35
36
85
86
87class BOARD;
88class EDA_TEXT;
89class FP_SHAPE;
90class PCB_SHAPE;
91class PCB_TEXTBOX;
92class FOOTPRINT;
93class ZONE;
94class PCB_DIM_RADIAL;
96
97namespace CFB
98{
99struct COMPOUND_FILE_ENTRY;
100} // namespace CFB
101
103
104// Structure for storing embedded model data
106{
107 wxString m_modelname;
110 std::vector<char> m_data;
111
112 // Constructor
113 ALTIUM_EMBEDDED_MODEL_DATA(const wxString& name, const VECTOR3D& rotation, double z_offset, std::vector<char>&& data)
114 : m_modelname(name), m_rotation(rotation), m_z_offset(z_offset), m_data(std::move(data)) {}
115};
116
117// type declaration required for a helper method
118class ALTIUM_PCB;
119typedef std::function<void( const ALTIUM_PCB_COMPOUND_FILE&, const CFB::COMPOUND_FILE_ENTRY* )>
121
123{
124public:
125 explicit ALTIUM_PCB( BOARD* aBoard, PROGRESS_REPORTER* aProgressReporter,
126 LAYER_MAPPING_HANDLER& aLayerMappingHandler,
127 REPORTER* aReporter = nullptr,
128 const wxString& aLibrary = wxEmptyString,
129 const wxString& aFootprintName = wxEmptyString);
130 ~ALTIUM_PCB();
131
132 void Parse( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
133 const std::map<ALTIUM_PCB_DIR, std::string>& aFileMapping );
134
136 const wxString& aFootprintName );
137
138private:
139 void checkpoint();
140
141 PCB_LAYER_ID GetKicadLayer( ALTIUM_LAYER aAltiumLayer ) const;
142 std::vector<PCB_LAYER_ID> GetKicadLayersToIterate( ALTIUM_LAYER aAltiumLayer ) const;
143 int GetNetCode( uint16_t aId ) const;
144 const ARULE6* GetRule( ALTIUM_RULE_KIND aKind, const wxString& aName ) const;
145 const ARULE6* GetRuleDefault( ALTIUM_RULE_KIND aKind ) const;
146
147 void ParseFileHeader( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
148 const CFB::COMPOUND_FILE_ENTRY* aEntry );
149
150 // Text Format
151 void ParseBoard6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
152 const CFB::COMPOUND_FILE_ENTRY* aEntry );
153 void ParseClasses6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
154 const CFB::COMPOUND_FILE_ENTRY* aEntry );
155 void ParseComponents6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
156 const CFB::COMPOUND_FILE_ENTRY* aEntry );
157 void ParseDimensions6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
158 const CFB::COMPOUND_FILE_ENTRY* aEntry );
159 void ParseModelsData( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
160 const CFB::COMPOUND_FILE_ENTRY* aEntry,
161 const std::vector<std::string>& aRootDir );
162 void ParseNets6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
163 const CFB::COMPOUND_FILE_ENTRY* aEntry );
164 void ParsePolygons6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
165 const CFB::COMPOUND_FILE_ENTRY* aEntry );
166 void ParseRules6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
167 const CFB::COMPOUND_FILE_ENTRY* aEntry );
168
169 // Binary Format
170 void ParseArcs6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
171 const CFB::COMPOUND_FILE_ENTRY* aEntry );
172 void ConvertArcs6ToPcbShape( const AARC6& aElem, PCB_SHAPE* aShape );
173 void ConvertArcs6ToBoardItem( const AARC6& aElem, const int aPrimitiveIndex );
174 void ConvertArcs6ToFootprintItem( FOOTPRINT* aFootprint, const AARC6& aElem,
175 const int aPrimitiveIndex, const bool aIsBoardImport );
176 void ConvertArcs6ToBoardItemOnLayer( const AARC6& aElem, PCB_LAYER_ID aLayer );
177 void ConvertArcs6ToFootprintItemOnLayer( FOOTPRINT* aFootprint, const AARC6& aElem,
178 PCB_LAYER_ID aLayer );
179 void ParseComponentsBodies6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
180 const CFB::COMPOUND_FILE_ENTRY* aEntry );
182 FOOTPRINT* aFootprint,
183 const ACOMPONENTBODY6& aElem );
184 void ParsePads6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
185 const CFB::COMPOUND_FILE_ENTRY* aEntry );
186 void ConvertPads6ToBoardItem( const APAD6& aElem );
187 void ConvertPads6ToFootprintItem( FOOTPRINT* aFootprint, const APAD6& aElem );
188 void ConvertPads6ToBoardItemOnNonCopper( const APAD6& aElem );
189 void ConvertPads6ToFootprintItemOnCopper( FOOTPRINT* aFootprint, const APAD6& aElem );
190 void ConvertPads6ToFootprintItemOnNonCopper( FOOTPRINT* aFootprint, const APAD6& aElem );
191 void ParseVias6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
192 const CFB::COMPOUND_FILE_ENTRY* aEntry );
193 void ConvertVias6ToFootprintItem( FOOTPRINT* aFootprint, const AVIA6& aElem );
194 void ParseTracks6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
195 const CFB::COMPOUND_FILE_ENTRY* aEntry );
196 void ConvertTracks6ToBoardItem( const ATRACK6& aElem, const int aPrimitiveIndex );
197 void ConvertTracks6ToFootprintItem( FOOTPRINT* aFootprint, const ATRACK6& aElem,
198 const int aPrimitiveIndex, const bool aIsBoardImport );
199 void ConvertTracks6ToBoardItemOnLayer( const ATRACK6& aElem, PCB_LAYER_ID aLayer );
200 void ConvertTracks6ToFootprintItemOnLayer( FOOTPRINT* aFootprint, const ATRACK6& aElem,
201 PCB_LAYER_ID aLayer );
202 void ParseTexts6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
203 const CFB::COMPOUND_FILE_ENTRY* aEntry );
204 void ConvertTexts6ToBoardItem( const ATEXT6& aElem );
205 void ConvertTexts6ToFootprintItem( FOOTPRINT* aFootprint, const ATEXT6& aElem );
206 void ConvertTexts6ToBoardItemOnLayer( const ATEXT6& aElem, PCB_LAYER_ID aLayer );
207 void ConvertTexts6ToFootprintItemOnLayer( FOOTPRINT* aFootprint, const ATEXT6& aElem,
208 PCB_LAYER_ID aLayer );
209 void ConvertBarcodes6ToBoardItemOnLayer( const ATEXT6& aElem, PCB_LAYER_ID aLayer );
210 void ConvertBarcodes6ToFootprintItemOnLayer( FOOTPRINT* aFootprint, const ATEXT6& aElem,
211 PCB_LAYER_ID aLayer );
212 void ConvertTexts6ToEdaTextSettings( const ATEXT6& aElem, EDA_TEXT& aEdaText );
213 void ParseFills6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
214 const CFB::COMPOUND_FILE_ENTRY* aEntry );
215 void ConvertFills6ToBoardItem( const AFILL6& aElem );
216 void ConvertFills6ToFootprintItem( FOOTPRINT* aFootprint, const AFILL6& aElem,
217 const bool aIsBoardImport );
218 void ConvertFills6ToBoardItemOnLayer( const AFILL6& aElem, PCB_LAYER_ID aLayer );
219 void ConvertFills6ToFootprintItemOnLayer( FOOTPRINT* aFootprint, const AFILL6& aElem,
220 PCB_LAYER_ID aLayer );
221 void ParseBoardRegionsData( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
222 const CFB::COMPOUND_FILE_ENTRY* aEntry );
223 void ParseShapeBasedRegions6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
224 const CFB::COMPOUND_FILE_ENTRY* aEntry );
226 void ConvertShapeBasedRegions6ToFootprintItem( FOOTPRINT* aFootprint, const AREGION6& aElem,
227 const int aPrimitiveIndex );
230 const AREGION6& aElem,
231 PCB_LAYER_ID aLayer,
232 const int aPrimitiveIndex );
234 const CFB::COMPOUND_FILE_ENTRY* aEntry );
235 void ParseRegions6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
236 const CFB::COMPOUND_FILE_ENTRY* aEntry );
237 void ParseWideStrings6Data( const ALTIUM_PCB_COMPOUND_FILE& aAltiumPcbFile,
238 const CFB::COMPOUND_FILE_ENTRY* aEntry );
239
240 // Helper Functions
241 void HelperParseDimensions6Linear( const ADIMENSION6& aElem );
242 void HelperParseDimensions6Radial( const ADIMENSION6& aElem );
243 void HelperParseDimensions6Leader( const ADIMENSION6& aElem );
244 void HelperParseDimensions6Datum( const ADIMENSION6& aElem );
245 void HelperParseDimensions6Center( const ADIMENSION6& aElem );
246
247 void HelperParsePad6NonCopper( const APAD6& aElem, PCB_LAYER_ID aLayer, PCB_SHAPE* aShape );
248
249 void HelperFillMechanicalLayerAssignments( const std::vector<ABOARD6_LAYER_STACKUP>& aStackup );
250
251 void HelperCreateBoardOutline( const std::vector<ALTIUM_VERTICE>& aVertices );
252
253 void HelperSetZoneLayers( ZONE& aZone, const ALTIUM_LAYER aAltiumLayer );
254 void HelperSetZoneKeepoutRestrictions( ZONE& aZone, const uint8_t aKeepoutRestrictions );
256 const ALTIUM_LAYER aAltiumLayer,
257 const uint8_t aKeepoutRestrictions );
258 void HelperPcpShapeAsFootprintKeepoutRegion( FOOTPRINT* aFootprint, const PCB_SHAPE& aShape,
259 const ALTIUM_LAYER aAltiumLayer,
260 const uint8_t aKeepoutRestrictions );
261
262 void HelperSetTextboxAlignmentAndPos( const ATEXT6& aElem, PCB_TEXTBOX* aPcbTextbox );
263 void HelperSetTextAlignmentAndPos( const ATEXT6& aElem, EDA_TEXT* aEdaText );
264
265 std::vector<std::pair<PCB_LAYER_ID, int>>
266 HelperGetSolderAndPasteMaskExpansions( const ALTIUM_RECORD aType, const int aPrimitiveIndex,
267 const ALTIUM_LAYER aAltiumLayer );
268
269 FOOTPRINT* HelperGetFootprint( uint16_t aComponent ) const;
270
271 void remapUnsureLayers( std::vector<ABOARD6_LAYER_STACKUP>& aStackup );
272
274 std::vector<FOOTPRINT*> m_components;
275 std::vector<ZONE*> m_polygons;
276 std::vector<PCB_DIM_RADIAL*> m_radialDimensions;
277 std::map<uint32_t, wxString> m_unicodeStrings;
278 std::vector<int> m_altiumToKicadNetcodes;
279 std::map<ALTIUM_LAYER, PCB_LAYER_ID> m_layermap; // used to correctly map layers
280 std::map<ALTIUM_LAYER, wxString> m_layerNames;
281
282 std::map<wxString, ALTIUM_EMBEDDED_MODEL_DATA> m_EmbeddedModels;
283 std::map<ALTIUM_RULE_KIND, std::vector<ARULE6>> m_rules;
284 std::map<ALTIUM_RECORD, std::multimap<int, const AEXTENDED_PRIMITIVE_INFORMATION>>
286
287 std::map<ALTIUM_LAYER, ZONE*> m_outer_plane;
288
290
293 unsigned m_doneCount;
295 unsigned m_totalCount;
296
297 wxString m_library;
299
302};
303
304
305#endif //ALTIUM_PCB_H
const char * name
ALTIUM_RULE_KIND
ALTIUM_RECORD
ALTIUM_PCB_DIR
Definition altium_pcb.h:38
@ UNIQUEIDPRIMITIVEINFORMATION
Definition altium_pcb.h:81
@ SHAPEBASEDCOMPONENTBODIES6
Definition altium_pcb.h:72
@ DESIGNRULECHECKEROPTIONS6
Definition altium_pcb.h:50
@ EXTENDPRIMITIVEINFORMATION
Definition altium_pcb.h:56
std::function< void(const ALTIUM_PCB_COMPOUND_FILE &, const CFB::COMPOUND_FILE_ENTRY *)> PARSE_FUNCTION_POINTER_fp
Definition altium_pcb.h:120
PROGRESS_REPORTER * m_progressReporter
optional; may be nullptr
Definition altium_pcb.h:291
void ParseClasses6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
std::vector< PCB_DIM_RADIAL * > m_radialDimensions
Definition altium_pcb.h:276
void ConvertArcs6ToFootprintItemOnLayer(FOOTPRINT *aFootprint, const AARC6 &aElem, PCB_LAYER_ID aLayer)
void ConvertTracks6ToBoardItem(const ATRACK6 &aElem, const int aPrimitiveIndex)
void ConvertTracks6ToFootprintItem(FOOTPRINT *aFootprint, const ATRACK6 &aElem, const int aPrimitiveIndex, const bool aIsBoardImport)
int m_highest_pour_index
Altium stores pour order across all layers.
Definition altium_pcb.h:301
void ConvertTexts6ToFootprintItemOnLayer(FOOTPRINT *aFootprint, const ATEXT6 &aElem, PCB_LAYER_ID aLayer)
std::map< ALTIUM_LAYER, PCB_LAYER_ID > m_layermap
Definition altium_pcb.h:279
void ConvertShapeBasedRegions6ToBoardItemOnLayer(const AREGION6 &aElem, PCB_LAYER_ID aLayer)
void ParseVias6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void HelperParseDimensions6Leader(const ADIMENSION6 &aElem)
wxString m_footprintName
for footprint library loading error reporting
Definition altium_pcb.h:298
std::vector< FOOTPRINT * > m_components
Definition altium_pcb.h:274
void HelperFillMechanicalLayerAssignments(const std::vector< ABOARD6_LAYER_STACKUP > &aStackup)
void ParseShapeBasedRegions6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
const ARULE6 * GetRuleDefault(ALTIUM_RULE_KIND aKind) const
void HelperParsePad6NonCopper(const APAD6 &aElem, PCB_LAYER_ID aLayer, PCB_SHAPE *aShape)
void ParseRegions6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
std::vector< PCB_LAYER_ID > GetKicadLayersToIterate(ALTIUM_LAYER aAltiumLayer) const
void ConvertShapeBasedRegions6ToFootprintItem(FOOTPRINT *aFootprint, const AREGION6 &aElem, const int aPrimitiveIndex)
void HelperPcpShapeAsFootprintKeepoutRegion(FOOTPRINT *aFootprint, const PCB_SHAPE &aShape, const ALTIUM_LAYER aAltiumLayer, const uint8_t aKeepoutRestrictions)
void ConvertArcs6ToBoardItem(const AARC6 &aElem, const int aPrimitiveIndex)
void ConvertShapeBasedRegions6ToFootprintItemOnLayer(FOOTPRINT *aFootprint, const AREGION6 &aElem, PCB_LAYER_ID aLayer, const int aPrimitiveIndex)
std::map< ALTIUM_LAYER, ZONE * > m_outer_plane
Definition altium_pcb.h:287
std::vector< int > m_altiumToKicadNetcodes
Definition altium_pcb.h:278
unsigned m_totalCount
for progress reporting
Definition altium_pcb.h:295
void ParseComponents6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void HelperPcpShapeAsBoardKeepoutRegion(const PCB_SHAPE &aShape, const ALTIUM_LAYER aAltiumLayer, const uint8_t aKeepoutRestrictions)
std::map< wxString, ALTIUM_EMBEDDED_MODEL_DATA > m_EmbeddedModels
Definition altium_pcb.h:282
void ConvertFills6ToBoardItemOnLayer(const AFILL6 &aElem, PCB_LAYER_ID aLayer)
std::vector< std::pair< PCB_LAYER_ID, int > > HelperGetSolderAndPasteMaskExpansions(const ALTIUM_RECORD aType, const int aPrimitiveIndex, const ALTIUM_LAYER aAltiumLayer)
void ConvertBarcodes6ToBoardItemOnLayer(const ATEXT6 &aElem, PCB_LAYER_ID aLayer)
void ConvertComponentBody6ToFootprintItem(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, FOOTPRINT *aFootprint, const ACOMPONENTBODY6 &aElem)
void HelperSetTextAlignmentAndPos(const ATEXT6 &aElem, EDA_TEXT *aEdaText)
void ParseBoard6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void ConvertFills6ToFootprintItem(FOOTPRINT *aFootprint, const AFILL6 &aElem, const bool aIsBoardImport)
void ParseExtendedPrimitiveInformationData(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void ParseFileHeader(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void ConvertShapeBasedRegions6ToBoardItem(const AREGION6 &aElem)
void HelperCreateBoardOutline(const std::vector< ALTIUM_VERTICE > &aVertices)
std::map< ALTIUM_RULE_KIND, std::vector< ARULE6 > > m_rules
Definition altium_pcb.h:283
void ConvertVias6ToFootprintItem(FOOTPRINT *aFootprint, const AVIA6 &aElem)
void ParseRules6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void HelperSetZoneKeepoutRestrictions(ZONE &aZone, const uint8_t aKeepoutRestrictions)
unsigned m_doneCount
Definition altium_pcb.h:293
void HelperParseDimensions6Linear(const ADIMENSION6 &aElem)
void ParseTracks6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
std::map< uint32_t, wxString > m_unicodeStrings
Definition altium_pcb.h:277
void ConvertTexts6ToBoardItem(const ATEXT6 &aElem)
void HelperParseDimensions6Center(const ADIMENSION6 &aElem)
void HelperParseDimensions6Radial(const ADIMENSION6 &aElem)
BOARD * m_board
Definition altium_pcb.h:273
void ParseBoardRegionsData(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void ParseArcs6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void ConvertTexts6ToBoardItemOnLayer(const ATEXT6 &aElem, PCB_LAYER_ID aLayer)
void ConvertPads6ToFootprintItemOnCopper(FOOTPRINT *aFootprint, const APAD6 &aElem)
FOOTPRINT * ParseFootprint(ALTIUM_PCB_COMPOUND_FILE &altiumLibFile, const wxString &aFootprintName)
REPORTER * m_reporter
optional; may be nullptr
Definition altium_pcb.h:292
int GetNetCode(uint16_t aId) const
void ConvertTexts6ToEdaTextSettings(const ATEXT6 &aElem, EDA_TEXT &aEdaText)
wxString m_library
for footprint library loading error reporting
Definition altium_pcb.h:297
void ConvertPads6ToFootprintItemOnNonCopper(FOOTPRINT *aFootprint, const APAD6 &aElem)
void ConvertTexts6ToFootprintItem(FOOTPRINT *aFootprint, const ATEXT6 &aElem)
unsigned m_lastProgressCount
Definition altium_pcb.h:294
void ParseFills6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void ConvertArcs6ToFootprintItem(FOOTPRINT *aFootprint, const AARC6 &aElem, const int aPrimitiveIndex, const bool aIsBoardImport)
void HelperParseDimensions6Datum(const ADIMENSION6 &aElem)
void ConvertPads6ToBoardItem(const APAD6 &aElem)
void ConvertFills6ToFootprintItemOnLayer(FOOTPRINT *aFootprint, const AFILL6 &aElem, PCB_LAYER_ID aLayer)
void ParseWideStrings6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void remapUnsureLayers(std::vector< ABOARD6_LAYER_STACKUP > &aStackup)
std::vector< ZONE * > m_polygons
Definition altium_pcb.h:275
void ParsePads6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void ConvertArcs6ToPcbShape(const AARC6 &aElem, PCB_SHAPE *aShape)
void ConvertTracks6ToBoardItemOnLayer(const ATRACK6 &aElem, PCB_LAYER_ID aLayer)
void ConvertFills6ToBoardItem(const AFILL6 &aElem)
FOOTPRINT * HelperGetFootprint(uint16_t aComponent) const
LAYER_MAPPING_HANDLER m_layerMappingHandler
Definition altium_pcb.h:289
void ParsePolygons6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
PCB_LAYER_ID GetKicadLayer(ALTIUM_LAYER aAltiumLayer) const
void checkpoint()
void ParseComponentsBodies6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void ConvertTracks6ToFootprintItemOnLayer(FOOTPRINT *aFootprint, const ATRACK6 &aElem, PCB_LAYER_ID aLayer)
void Parse(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const std::map< ALTIUM_PCB_DIR, std::string > &aFileMapping)
ALTIUM_PCB(BOARD *aBoard, PROGRESS_REPORTER *aProgressReporter, LAYER_MAPPING_HANDLER &aLayerMappingHandler, REPORTER *aReporter=nullptr, const wxString &aLibrary=wxEmptyString, const wxString &aFootprintName=wxEmptyString)
void ConvertArcs6ToBoardItemOnLayer(const AARC6 &aElem, PCB_LAYER_ID aLayer)
void ParseTexts6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
std::map< ALTIUM_RECORD, std::multimap< int, const AEXTENDED_PRIMITIVE_INFORMATION > > m_extendedPrimitiveInformationMaps
Definition altium_pcb.h:285
void ParseModelsData(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry, const std::vector< std::string > &aRootDir)
std::map< ALTIUM_LAYER, wxString > m_layerNames
Definition altium_pcb.h:280
void ConvertPads6ToBoardItemOnNonCopper(const APAD6 &aElem)
void HelperSetTextboxAlignmentAndPos(const ATEXT6 &aElem, PCB_TEXTBOX *aPcbTextbox)
void ConvertBarcodes6ToFootprintItemOnLayer(FOOTPRINT *aFootprint, const ATEXT6 &aElem, PCB_LAYER_ID aLayer)
void ParseNets6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void ConvertPads6ToFootprintItem(FOOTPRINT *aFootprint, const APAD6 &aElem)
const ARULE6 * GetRule(ALTIUM_RULE_KIND aKind, const wxString &aName) const
void ParseDimensions6Data(const ALTIUM_PCB_COMPOUND_FILE &aAltiumPcbFile, const CFB::COMPOUND_FILE_ENTRY *aEntry)
void HelperSetZoneLayers(ZONE &aZone, const ALTIUM_LAYER aAltiumLayer)
Information pertinent to a Pcbnew printed circuit board.
Definition board.h:322
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
Definition eda_text.h:80
A radial dimension indicates either the radius or diameter of an arc or circle.
A progress reporter interface for use in multi-threaded environments.
A pure virtual class used to derive REPORTER objects from.
Definition reporter.h:73
Handle a list of polygons defining a copper zone.
Definition zone.h:73
PCB_LAYER_ID
A quick note on layer IDs:
Definition layer_ids.h:60
STL namespace.
std::function< std::map< wxString, PCB_LAYER_ID >(const std::vector< INPUT_LAYER_DESC > &)> LAYER_MAPPING_HANDLER
Pointer to a function that takes a map of source and KiCad layers and returns a re-mapped version.
std::vector< char > m_data
Definition altium_pcb.h:110
ALTIUM_EMBEDDED_MODEL_DATA(const wxString &name, const VECTOR3D &rotation, double z_offset, std::vector< char > &&data)
Definition altium_pcb.h:113
VECTOR3< double > VECTOR3D
Definition vector3.h:230