Add basic QA test to CADSTAR PCB footprint import

This commit is contained in:
Roberto Fernandez Bautista 2023-05-29 23:28:46 +02:00
parent 3b56b7bf68
commit bb90aa24b7
6 changed files with 1180 additions and 2 deletions

View File

@ -818,6 +818,8 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadComponentLibrary()
// ordering of pads in footprint->Pads()
footprint->SetPosition( { 0, 0 } ); // KiCad expects library footprints at 0,0
footprint->SetReference( wxT( "REF**" ) );
footprint->SetValue( libID.GetLibItemName() );
m_libraryMap.insert( std::make_pair( key, footprint ) );
}
}
@ -878,6 +880,7 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadLibraryCoppers( const SYMDEF_PCB& aComponen
anchorPad = aComponent.ComponentPads.at( compCopper.AssociatedPadIDs.front() );
std::unique_ptr<PAD> pad = std::make_unique<PAD>( aFootprint );
pad->SetKeepTopBottom( false ); // TODO: correct? This seems to be KiCad default on import
pad->SetAttribute( PAD_ATTRIB::SMD );
pad->SetLayerSet( LSET( 1, copperLayer ) );
pad->SetNumber( anchorPad.Identifier.IsEmpty()
@ -1309,6 +1312,8 @@ PAD* CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPad( const COMPONENT_PAD& aCadstarPad,
m_padcodesTested.insert( csPadcode.ID );
}
pad->SetKeepTopBottom( false ); // TODO: correct? This seems to be KiCad default on import
return pad.release();
}

View File

@ -0,0 +1,646 @@
(CADSTARPCB
(HEADER
(FORMAT LIBRARY 2 21)
(JOBFILE "C:\\Users\\Public\\Zuken\\CADSTAR Express 2022.0\\Library\\test-pcb.lib")
(JOBTITLE "")
(GENERATOR "PCB to CPA, Version 2022.0.0.32")
(RESOLUTION
(METRIC HUNDREDTH MICRON)
)
(TIMESTAMP 2023 5 29 23 22 53)
)
(ASSIGNMENTS
(LAYERDEFS
(LAYERSTACK LAY7 LAY8 LAY10 LAY12 LAY13 LAY14 LAY6 LAY15 LAY11 LAY9)
(LAYER LAY0 "(All Layers)"
(ALLLAYER)
)
(LAYER LAY1 "(All Electrical Layers)"
(ALLELEC)
)
(LAYER LAY2 "(All Documentation Layers)"
(ALLDOC)
)
(LAYER LAY3 "(Undefined)"
(NOLAYER)
)
(LAYER LAY4 "(Component Copper)"
(ASSCOMPCOPP)
)
(LAYER LAY5 "(Jumper)"
(JUMPERLAYER)
)
(LAYER LAY6 "Top Elec"
(ELEC 1
(BIAS UNBIASED)
(LAYERHEIGHT 0)
)
(DESCRIPTION "Top Electrical Layer")
)
(LAYER LAY7 "Top silk"
(NONELEC 1)
(LASUBTYP LAYERSUBTYPE_SILKSCREEN)
)
(LAYER LAY8 "Top Solder Resist"
(NONELEC 1)
(DESCRIPTION "Component Side")
(LASUBTYP LAYERSUBTYPE_SOLDERRESIST)
)
(LAYER LAY9 "Bottom Solder Resist"
(NONELEC 2)
(DESCRIPTION "Solder Side")
)
(LAYER LAY10 "Top Paste"
(NONELEC 1)
(LASUBTYP LAYERSUBTYPE_PASTE)
)
(LAYER LAY11 "Bottom Paste"
(NONELEC 2)
)
(LAYER LAY12 "Top Assembly"
(NONELEC 1)
(LASUBTYP LAYERSUBTYPE_ASSEMBLY)
)
(LAYER LAY13 "Top Placement"
(NONELEC 1)
(LASUBTYP LAYERSUBTYPE_PLACEMENT)
)
(LAYER LAY14 "Doc - Component Construction"
(NONELEC 1)
)
(LAYER LAY15 "Bottom Elec"
(ELEC 2
(BIAS UNBIASED)
(LAYERHEIGHT 0)
)
(DESCRIPTION "Bottom Electrical")
)
)
(CODEDEFS
(LINECODE LC1 "Silkscreen Outline 1" 2540
(STYLE SOLID)
)
(LINECODE LC2 "Assembly Outline 1" 2540
(STYLE SOLID)
)
(LINECODE LC3 "Placement Outline 1" 2540
(STYLE SOLID)
)
(LINECODE LC4 "Line 8" 20320
(STYLE SOLID)
)
(LINECODE LC5 "Line 1" 2540
(STYLE SOLID)
)
(LINECODE LC6 "Line Thinest" 1000
(STYLE SOLID)
)
(LINECODE LC7 "Line 6" 15240
(STYLE SOLID)
)
(TEXTCODE TC0 "(Pin Name/Number)" 10000 100000 100000)
(TEXTCODE TC1 "Component Name" 3000 60000 40000)
(TEXTCODE TC2 "Silkscreen Text 5" 12700 127000 127000)
(TEXTCODE TC3 "Assembly Text 5" 12700 127000 127000)
(COPPERCODE CC0 "Copper 1" 2540)
(SPACINGCODE P_P 100000)
(SPACINGCODE P_C 100000)
(SPACINGCODE C_C 100000)
(SPACINGCODE H_H 100000)
(PADCODE PC0 "r125_60"
(RECTANGLE 60000 32500 32500)
)
(PADCODE PC1 "Rectangle 32x12"
(RECTANGLE 30000 25000 25000
(ORIENT 90000)
)
(PADREASSIGN LAY8
(RECTANGLE 43180 25400 25400
(ORIENT 90000)
)
)
(PADREASSIGN LAY9
(RECTANGLE 43180 25400 25400
(ORIENT 90000)
)
)
)
(PADCODE PC2 "Circle 0.3/0.2mm"
(ROUND 30000)
(DRILL 20000)
(PADREASSIGN LAY8
(ROUND 0)
)
(PADREASSIGN LAY9
(ROUND 0)
)
(PADREASSIGN LAY10
(ROUND 0)
)
(PADREASSIGN LAY11
(ROUND 0)
)
)
(ATTRNAME AT0 "Component Category"
(ATTROWNER COMPONENT)
)
(ATTRNAME AT1 "assembly_name"
(ATTROWNER COMPONENT)
)
(ATTRNAME AT2 "Value"
(ATTROWNER COMPONENT)
)
(ATTRNAME AT3 "thm_power_diss"
(ATTROWNER COMPONENT)
)
(ATTRNAME AT4 "placement"
(ATTROWNER COMPONENT)
)
(ATTRNAME AT5 "silkscrn_name"
(ATTROWNER COMPONENT)
)
(ATTRNAME AT6 "Manufacturers Part Number"
(ATTROWNER COMPONENT)
)
(ATTRNAME AT7 "Height"
(ATTROWNER SYMDEF)
)
(ATTRNAME AT8 "Drawing_Name"
(ATTROWNER DOCSYMBOL)
)
(ATTRNAME AT9 "Client"
(ATTROWNER DOCSYMBOL)
)
(ATTRNAME AT10 "RefDes"
(ATTROWNER COMPONENT)
)
)
(TECHNOLOGY
(UNITS MM)
(UNITSPRECISION 2)
(INTERLINEGAP 20)
(BARLINEGAP 20)
(ALLOWBARTEXT)
(ANGULARPRECISION 1)
(MAXPHYSLAYER 2)
(DESIGNORIGIN (PT 0 0))
(DESIGNAREA (PT 0 0) (PT 100000000 100000000))
(PINNOOFFSET 50800)
(PINNOANGLE 0)
(DESIGNLIMIT (PT 100000000 100000000))
)
)
(LIBRARY
(HIERARCHY
(ROOTFOLDER F0 "root"
(SYMDEFLIST L0)
)
)
(SYMDEF L0 "CP_32_7" "" (PT 50000000 50000000)
(SYMHEIGHT 100000)
(VERSION 3)
(FIGURE FIG0 LC7 LAY7
(OPENSHAPE (PT 50250190 50223514) (PT 50250190 50250190))
)
(FIGURE FIG1 LC7 LAY7
(OPENSHAPE (PT 50223514 49749810) (PT 50250190 49749810))
)
(FIGURE FIG2 LC7 LAY7
(OPENSHAPE (PT 49776486 50250190) (PT 49749810 50250190))
)
(FIGURE FIG3 LC5 LAY12
(OPENSHAPE (PT 49749810 50123190) (PT 49876810 50250190))
)
(FIGURE FIG4 LC5 LAY12
(OPENSHAPE (PT 50159760 50250190) (PT 50190240 50250190))
)
(FIGURE FIG5 LC5 LAY12
(OPENSHAPE (PT 50190240 50250190) (PT 50159760 50250190))
)
(FIGURE FIG6 LC5 LAY12
(OPENSHAPE (PT 50109760 50250190) (PT 50140240 50250190))
)
(FIGURE FIG7 LC5 LAY12
(OPENSHAPE (PT 50140240 50250190) (PT 50109760 50250190))
)
(FIGURE FIG8 LC5 LAY12
(OPENSHAPE (PT 50059760 50250190) (PT 50090240 50250190))
)
(FIGURE FIG9 LC5 LAY12
(OPENSHAPE (PT 50090240 50250190) (PT 50059760 50250190))
)
(FIGURE FIG10 LC5 LAY12
(OPENSHAPE (PT 50009760 50250190) (PT 50040240 50250190))
)
(FIGURE FIG11 LC5 LAY12
(OPENSHAPE (PT 50040240 50250190) (PT 50009760 50250190))
)
(FIGURE FIG12 LC5 LAY12
(OPENSHAPE (PT 49959760 50250190) (PT 49990240 50250190))
)
(FIGURE FIG13 LC5 LAY12
(OPENSHAPE (PT 49990240 50250190) (PT 49959760 50250190))
)
(FIGURE FIG14 LC5 LAY12
(OPENSHAPE (PT 49909760 50250190) (PT 49940240 50250190))
)
(FIGURE FIG15 LC5 LAY12
(OPENSHAPE (PT 49940240 50250190) (PT 49909760 50250190))
)
(FIGURE FIG16 LC5 LAY12
(OPENSHAPE (PT 49859760 50250190) (PT 49890240 50250190))
)
(FIGURE FIG17 LC5 LAY12
(OPENSHAPE (PT 49890240 50250190) (PT 49859760 50250190))
)
(FIGURE FIG18 LC5 LAY12
(OPENSHAPE (PT 49809760 50250190) (PT 49840240 50250190))
)
(FIGURE FIG19 LC5 LAY12
(OPENSHAPE (PT 49840240 50250190) (PT 49809760 50250190))
)
(FIGURE FIG20 LC5 LAY12
(OPENSHAPE (PT 49749810 50159760) (PT 49749810 50190240))
)
(FIGURE FIG21 LC5 LAY12
(OPENSHAPE (PT 49749810 50190240) (PT 49749810 50159760))
)
(FIGURE FIG22 LC5 LAY12
(OPENSHAPE (PT 49749810 50109760) (PT 49749810 50140240))
)
(FIGURE FIG23 LC5 LAY12
(OPENSHAPE (PT 49749810 50140240) (PT 49749810 50109760))
)
(FIGURE FIG24 LC5 LAY12
(OPENSHAPE (PT 49749810 50059760) (PT 49749810 50090240))
)
(FIGURE FIG25 LC5 LAY12
(OPENSHAPE (PT 49749810 50090240) (PT 49749810 50059760))
)
(FIGURE FIG26 LC5 LAY12
(OPENSHAPE (PT 49749810 50009760) (PT 49749810 50040240))
)
(FIGURE FIG27 LC5 LAY12
(OPENSHAPE (PT 49749810 50040240) (PT 49749810 50009760))
)
(FIGURE FIG28 LC5 LAY12
(OPENSHAPE (PT 49749810 49959760) (PT 49749810 49990240))
)
(FIGURE FIG29 LC5 LAY12
(OPENSHAPE (PT 49749810 49990240) (PT 49749810 49959760))
)
(FIGURE FIG30 LC5 LAY12
(OPENSHAPE (PT 49749810 49909760) (PT 49749810 49940240))
)
(FIGURE FIG31 LC5 LAY12
(OPENSHAPE (PT 49749810 49940240) (PT 49749810 49909760))
)
(FIGURE FIG32 LC5 LAY12
(OPENSHAPE (PT 49749810 49859760) (PT 49749810 49890240))
)
(FIGURE FIG33 LC5 LAY12
(OPENSHAPE (PT 49749810 49890240) (PT 49749810 49859760))
)
(FIGURE FIG34 LC5 LAY12
(OPENSHAPE (PT 49749810 49809760) (PT 49749810 49840240))
)
(FIGURE FIG35 LC5 LAY12
(OPENSHAPE (PT 49749810 49840240) (PT 49749810 49809760))
)
(FIGURE FIG36 LC5 LAY12
(OPENSHAPE (PT 49840240 49749810) (PT 49809760 49749810))
)
(FIGURE FIG37 LC5 LAY12
(OPENSHAPE (PT 49890240 49749810) (PT 49859760 49749810))
)
(FIGURE FIG38 LC5 LAY12
(OPENSHAPE (PT 49859760 49749810) (PT 49890240 49749810))
)
(FIGURE FIG39 LC5 LAY12
(OPENSHAPE (PT 49940240 49749810) (PT 49909760 49749810))
)
(FIGURE FIG40 LC5 LAY12
(OPENSHAPE (PT 49909760 49749810) (PT 49940240 49749810))
)
(FIGURE FIG41 LC5 LAY12
(OPENSHAPE (PT 49990240 49749810) (PT 49959760 49749810))
)
(FIGURE FIG42 LC5 LAY12
(OPENSHAPE (PT 49959760 49749810) (PT 49990240 49749810))
)
(FIGURE FIG43 LC5 LAY12
(OPENSHAPE (PT 50040240 49749810) (PT 50009760 49749810))
)
(FIGURE FIG44 LC5 LAY12
(OPENSHAPE (PT 50009760 49749810) (PT 50040240 49749810))
)
(FIGURE FIG45 LC5 LAY12
(OPENSHAPE (PT 50090240 49749810) (PT 50059760 49749810))
)
(FIGURE FIG46 LC5 LAY12
(OPENSHAPE (PT 50059760 49749810) (PT 50090240 49749810))
)
(FIGURE FIG47 LC5 LAY12
(OPENSHAPE (PT 50140240 49749810) (PT 50109760 49749810))
)
(FIGURE FIG48 LC5 LAY12
(OPENSHAPE (PT 50109760 49749810) (PT 50140240 49749810))
)
(FIGURE FIG49 LC5 LAY12
(OPENSHAPE (PT 50190240 49749810) (PT 50159760 49749810))
)
(FIGURE FIG50 LC5 LAY12
(OPENSHAPE (PT 50159760 49749810) (PT 50190240 49749810))
)
(FIGURE FIG51 LC5 LAY12
(OPENSHAPE (PT 50250190 49840240) (PT 50250190 49809760))
)
(FIGURE FIG52 LC5 LAY12
(OPENSHAPE (PT 50250190 49809760) (PT 50250190 49840240))
)
(FIGURE FIG53 LC5 LAY12
(OPENSHAPE (PT 50250190 49890240) (PT 50250190 49859760))
)
(FIGURE FIG54 LC5 LAY12
(OPENSHAPE (PT 50250190 49859760) (PT 50250190 49890240))
)
(FIGURE FIG55 LC5 LAY12
(OPENSHAPE (PT 50250190 49940240) (PT 50250190 49909760))
)
(FIGURE FIG56 LC5 LAY12
(OPENSHAPE (PT 50250190 49909760) (PT 50250190 49940240))
)
(FIGURE FIG57 LC5 LAY12
(OPENSHAPE (PT 50250190 49990240) (PT 50250190 49959760))
)
(FIGURE FIG58 LC5 LAY12
(OPENSHAPE (PT 50250190 49959760) (PT 50250190 49990240))
)
(FIGURE FIG59 LC5 LAY12
(OPENSHAPE (PT 50250190 50040240) (PT 50250190 50009760))
)
(FIGURE FIG60 LC5 LAY12
(OPENSHAPE (PT 50250190 50009760) (PT 50250190 50040240))
)
(FIGURE FIG61 LC5 LAY12
(OPENSHAPE (PT 50250190 50090240) (PT 50250190 50059760))
)
(FIGURE FIG62 LC5 LAY12
(OPENSHAPE (PT 50250190 50059760) (PT 50250190 50090240))
)
(FIGURE FIG63 LC5 LAY12
(OPENSHAPE (PT 50250190 50140240) (PT 50250190 50109760))
)
(FIGURE FIG64 LC5 LAY12
(OPENSHAPE (PT 50250190 50109760) (PT 50250190 50140240))
)
(FIGURE FIG65 LC5 LAY12
(OPENSHAPE (PT 50250190 50190240) (PT 50250190 50159760))
)
(FIGURE FIG66 LC5 LAY12
(OPENSHAPE (PT 50250190 50159760) (PT 50250190 50190240))
)
(FIGURE FIG67 LC7 LAY7
(OPENSHAPE (PT 49749810 49749810) (PT 49776486 49749810))
)
(FIGURE FIG68 LC7 LAY7
(OPENSHAPE (PT 50250190 49749810) (PT 50250190 49776486))
)
(FIGURE FIG69 LC7 LAY7
(OPENSHAPE (PT 50250190 50250190) (PT 50223514 50250190))
)
(FIGURE FIG70 LC7 LAY7
(OPENSHAPE (PT 49749810 50250190) (PT 49749810 50223514))
)
(FIGURE FIG71 LC7 LAY7
(OPENSHAPE (PT 49749810 49776486) (PT 49749810 49749810))
)
(FIGURE FIG72 LC5 LAY12
(OPENSHAPE (PT 50250190 49749810) (PT 50250190 50250190))
)
(FIGURE FIG73 LC5 LAY12
(OPENSHAPE (PT 50250190 50250190) (PT 49749810 50250190))
)
(FIGURE FIG74 LC4 LAY7
(SOLID (PT 49750980 50218820)
(CWSEMI (PT 49750980 50278820))
(CWSEMI (PT 49750980 50218820))
)
)
(FIGURE FIG75 LC6 LAY14
(OUTLINE (PT 49750000 49750000) (PT 50250000 49750000) (PT 50250000 50250000) (PT 49750000 50250000) (PT 49750000 49750000))
)
(FIGURE FIG76 LC6 LAY14
(OUTLINE (PT 49825000 49825000) (PT 50175000 49825000) (PT 50175000 50175000) (PT 49825000 50175000) (PT 49825000 49825000))
)
(FIGURE FIG77 LC6 LAY14
(OUTLINE (PT 49850000 49850000) (PT 50150000 49850000) (PT 50150000 50150000) (PT 49850000 50150000) (PT 49850000 49850000))
)
(FIGURE FIG78 LC6 LAY14
(OUTLINE (PT 49750000 50175000) (PT 49825000 50175000) (PT 49825000 50250000) (PT 49750000 50250000) (PT 49750000 50175000))
)
(FIGURE FIG79 LC6 LAY14
(OUTLINE (PT 50175000 50175000) (PT 50250000 50175000) (PT 50250000 50250000) (PT 50175000 50250000) (PT 50175000 50175000))
)
(FIGURE FIG80 LC6 LAY14
(OUTLINE (PT 50175000 49750000) (PT 50250000 49750000) (PT 50250000 49825000) (PT 50175000 49825000) (PT 50175000 49750000))
)
(FIGURE FIG81 LC6 LAY14
(OUTLINE (PT 49750000 49750000) (PT 49825000 49750000) (PT 49825000 49825000) (PT 49750000 49825000) (PT 49750000 49750000))
)
(FIGURE FIG82 LC6 LAY12
(OUTLINE (PT 49750000 49750000) (PT 50250000 49750000) (PT 50250000 50250000) (PT 49750000 50250000) (PT 49750000 49750000))
)
(FIGURE FIG83 LC6 LAY13
(OUTLINE (PT 49715000 49715000) (PT 50285000 49715000) (PT 50285000 50285000) (PT 49715000 50285000) (PT 49715000 49715000))
)
(FIGURE FIG84 LC6 LAY8
(SOLID (PT 49837500 49837500) (PT 50162500 49837500) (PT 50162500 50162500) (PT 49837500 50162500) (PT 49837500 49837500))
)
(FIGURE FIG85 LC6 LAY10
(SOLID (PT 49875000 49875000) (PT 49975000 49875000) (PT 49975000 49975000) (PT 49875000 49975000) (PT 49875000 49875000))
)
(FIGURE FIG86 LC6 LAY10
(SOLID (PT 50025000 49875000) (PT 50125000 49875000) (PT 50125000 49975000) (PT 50025000 49975000) (PT 50025000 49875000))
)
(FIGURE FIG87 LC6 LAY10
(SOLID (PT 49875000 50025000) (PT 49975000 50025000) (PT 49975000 50125000) (PT 49875000 50125000) (PT 49875000 50025000))
)
(FIGURE FIG88 LC6 LAY10
(SOLID (PT 50025000 50025000) (PT 50125000 50025000) (PT 50125000 50125000) (PT 50025000 50125000) (PT 50025000 50025000))
)
(COMPCOPPER CC0 LAY6
(SOLID (PT 49850000 49850000) (PT 50150000 49850000) (PT 50150000 50150000) (PT 49850000 50150000) (PT 49850000 49850000))
(ASSOCPIN 33 34 35 36 37 38 39 40 41)
)
(PAD 1 (PT 49759970 50175000) PC1 TOP
(ORIENT 270000)
(EXITS N E S W NE NW SE SW)
(FIRSTPAD)
(PADIDENTIFIER "1")
)
(PAD 2 (PT 49759970 50125000) PC1 TOP
(ORIENT 270000)
(PADIDENTIFIER "2")
)
(PAD 3 (PT 49759970 50075000) PC1 TOP
(ORIENT 270000)
(PADIDENTIFIER "3")
)
(PAD 4 (PT 49759970 50025000) PC1 TOP
(ORIENT 270000)
(PADIDENTIFIER "4")
)
(PAD 5 (PT 49759970 49975000) PC1 TOP
(ORIENT 270000)
(PADIDENTIFIER "5")
)
(PAD 6 (PT 49759970 49925000) PC1 TOP
(ORIENT 270000)
(PADIDENTIFIER "6")
)
(PAD 7 (PT 49759970 49875000) PC1 TOP
(ORIENT 270000)
(PADIDENTIFIER "7")
)
(PAD 8 (PT 49759970 49825000) PC1 TOP
(ORIENT 270000)
(EXITS N E S W NE NW SE SW)
(PADIDENTIFIER "8")
)
(PAD 9 (PT 49825000 49759970) PC1 TOP
(ORIENT 180000)
(EXITS N E S W NE NW SE SW)
(PADIDENTIFIER "9")
)
(PAD 10 (PT 49875000 49759970) PC1 TOP
(ORIENT 180000)
(PADIDENTIFIER "10")
)
(PAD 11 (PT 49925000 49759970) PC1 TOP
(ORIENT 180000)
(PADIDENTIFIER "11")
)
(PAD 12 (PT 49975000 49759970) PC1 TOP
(ORIENT 180000)
(PADIDENTIFIER "12")
)
(PAD 13 (PT 50025000 49759970) PC1 TOP
(ORIENT 180000)
(PADIDENTIFIER "13")
)
(PAD 14 (PT 50075000 49759970) PC1 TOP
(ORIENT 180000)
(PADIDENTIFIER "14")
)
(PAD 15 (PT 50125000 49759970) PC1 TOP
(ORIENT 180000)
(PADIDENTIFIER "15")
)
(PAD 16 (PT 50175000 49759970) PC1 TOP
(ORIENT 180000)
(EXITS N E S W NE NW SE SW)
(PADIDENTIFIER "16")
)
(PAD 17 (PT 50240030 49825000) PC1 TOP
(ORIENT 270000)
(EXITS N E S W NE NW SE SW)
(PADIDENTIFIER "17")
)
(PAD 18 (PT 50240030 49875000) PC1 TOP
(ORIENT 270000)
(PADIDENTIFIER "18")
)
(PAD 19 (PT 50240030 49925000) PC1 TOP
(ORIENT 270000)
(PADIDENTIFIER "19")
)
(PAD 20 (PT 50240030 49975000) PC1 TOP
(ORIENT 270000)
(PADIDENTIFIER "20")
)
(PAD 21 (PT 50240030 50025000) PC1 TOP
(ORIENT 270000)
(PADIDENTIFIER "21")
)
(PAD 22 (PT 50240030 50075000) PC1 TOP
(ORIENT 270000)
(PADIDENTIFIER "22")
)
(PAD 23 (PT 50240030 50125000) PC1 TOP
(ORIENT 270000)
(PADIDENTIFIER "23")
)
(PAD 24 (PT 50240030 50175000) PC1 TOP
(ORIENT 270000)
(EXITS N E S W NE NW SE SW)
(PADIDENTIFIER "24")
)
(PAD 25 (PT 50175000 50240030) PC1 TOP
(ORIENT 180000)
(EXITS N E S W NE NW SE SW)
(PADIDENTIFIER "25")
)
(PAD 26 (PT 50125000 50240030) PC1 TOP
(ORIENT 180000)
(PADIDENTIFIER "26")
)
(PAD 27 (PT 50075000 50240030) PC1 TOP
(ORIENT 180000)
(PADIDENTIFIER "27")
)
(PAD 28 (PT 50025000 50240030) PC1 TOP
(ORIENT 180000)
(PADIDENTIFIER "28")
)
(PAD 29 (PT 49975000 50240030) PC1 TOP
(ORIENT 180000)
(PADIDENTIFIER "29")
)
(PAD 30 (PT 49925000 50240030) PC1 TOP
(ORIENT 180000)
(PADIDENTIFIER "30")
)
(PAD 31 (PT 49875000 50240030) PC1 TOP
(ORIENT 180000)
(PADIDENTIFIER "31")
)
(PAD 32 (PT 49825000 50240030) PC1 TOP
(ORIENT 180000)
(EXITS N E S W NE NW SE SW)
(PADIDENTIFIER "32")
)
(PAD 33 (PT 49920000 50080000) PC2 THRU
(PADIDENTIFIER "33")
)
(PAD 34 (PT 50000000 50080000) PC2 THRU
(PADIDENTIFIER "34")
)
(PAD 35 (PT 50080000 50080000) PC2 THRU
(PADIDENTIFIER "35")
)
(PAD 36 (PT 49920000 50000000) PC2 THRU
(PADIDENTIFIER "36")
)
(PAD 37 (PT 50000000 50000000) PC2 THRU
(PADIDENTIFIER "37")
)
(PAD 38 (PT 50080000 50000000) PC2 THRU
(PADIDENTIFIER "38")
)
(PAD 39 (PT 49920000 49920000) PC2 THRU
(PADIDENTIFIER "39")
)
(PAD 40 (PT 50000000 49920000) PC2 THRU
(PADIDENTIFIER "40")
)
(PAD 41 (PT 50080000 49920000) PC2 THRU
(PADIDENTIFIER "41")
)
(TEXTLOC PART_NAME TC3 LAY12 (PT 50280000 49790000))
(TEXTLOC COMP_NAME TC2 LAY7 (PT 50300000 49900000))
)
)
)

View File

@ -0,0 +1,387 @@
(footprint "CP_32_7" (version 20230517) (generator pcbnew)
(layer "F.Cu")
(fp_text reference "REF**" (at 0 0) (layer "F.SilkS") (tstamp 560166af-5d13-4315-b926-bb9d94195389)
(effects (font (size 1.27 1.27) (thickness 0.15)))
)
(fp_text value "CP_32_7" (at 0 0) (layer "F.SilkS") (tstamp 7c57ec84-94e3-4f7a-8f58-353588e9c9d8)
(effects (font (size 1.27 1.27) (thickness 0.15)))
)
(fp_poly
(pts
(xy -0.25 -0.25)
(xy -1.25 -0.25)
(xy -1.25 -1.25)
(xy -0.25 -1.25)
)
(stroke (width 0.01) (type solid)) (fill solid) (layer "F.Paste") (tstamp c4743a40-3e13-46b7-a97b-c3451f64f5c4))
(fp_poly
(pts
(xy -0.25 1.25)
(xy -1.25 1.25)
(xy -1.25 0.25)
(xy -0.25 0.25)
)
(stroke (width 0.01) (type solid)) (fill solid) (layer "F.Paste") (tstamp a4532941-056b-4e1d-bc13-930c5554526a))
(fp_poly
(pts
(xy 1.25 -0.25)
(xy 0.25 -0.25)
(xy 0.25 -1.25)
(xy 1.25 -1.25)
)
(stroke (width 0.01) (type solid)) (fill solid) (layer "F.Paste") (tstamp 029a6bf2-e360-4d25-885a-a2d203e90be1))
(fp_poly
(pts
(xy 1.25 1.25)
(xy 0.25 1.25)
(xy 0.25 0.25)
(xy 1.25 0.25)
)
(stroke (width 0.01) (type solid)) (fill solid) (layer "F.Paste") (tstamp 4dc072a8-d0ef-487a-a80e-5575a8151db0))
(fp_line (start -2.5019 -2.5019) (end -2.5019 -2.23514)
(stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp f7145a9d-d444-44b5-9b3a-a25ed7c20726))
(fp_line (start -2.5019 2.23514) (end -2.5019 2.5019)
(stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 5f2dc06f-c843-459b-8a3e-e47ac8fd130c))
(fp_line (start -2.5019 2.5019) (end -2.23514 2.5019)
(stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 57666fb5-b9ce-4a25-a366-ebce603b845d))
(fp_line (start -2.23514 -2.5019) (end -2.5019 -2.5019)
(stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 74e4dfab-f2d4-44c9-a070-353e15f3fe9a))
(fp_line (start 2.23514 2.5019) (end 2.5019 2.5019)
(stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 968da8c0-d596-4093-8624-7bb2fe63d987))
(fp_line (start 2.5019 -2.5019) (end 2.23514 -2.5019)
(stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 6cc7f468-6f6b-4562-b831-6446de211593))
(fp_line (start 2.5019 -2.23514) (end 2.5019 -2.5019)
(stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp c1d1a17e-5e3b-4960-8f5d-a24cd8ec4567))
(fp_line (start 2.5019 2.5019) (end 2.5019 2.23514)
(stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp bd8c9af4-353e-49df-bd14-4c88916b59f9))
(fp_poly
(pts
(xy -2.437704 -2.785921)
(xy -2.339043 -2.750012)
(xy -2.258614 -2.682524)
(xy -2.206118 -2.591597)
(xy -2.187886 -2.4882)
(xy -2.206118 -2.384803)
(xy -2.258614 -2.293876)
(xy -2.339043 -2.226388)
(xy -2.437704 -2.190479)
(xy -2.4902 -2.1882)
(xy -2.542696 -2.190479)
(xy -2.641357 -2.226388)
(xy -2.721786 -2.293876)
(xy -2.774282 -2.384803)
(xy -2.792514 -2.4882)
(xy -2.774282 -2.591597)
(xy -2.721786 -2.682524)
(xy -2.641357 -2.750012)
(xy -2.542696 -2.785921)
(xy -2.4902 -2.7882)
)
(stroke (width 0.2032) (type solid)) (fill solid) (layer "F.SilkS") (tstamp 47562d03-fbda-4d62-a7eb-2cc8b2dc4138))
(fp_poly
(pts
(xy 1.625 1.625)
(xy -1.625 1.625)
(xy -1.625 -1.625)
(xy 1.625 -1.625)
)
(stroke (width 0.01) (type solid)) (fill solid) (layer "F.Mask") (tstamp 87ab8447-6479-4e4d-9434-3eb5396ccdf8))
(fp_line (start -2.5 -2.5) (end -2.5 -1.75)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp dc0f11ec-f499-421b-81d8-b2042059bb88))
(fp_line (start -2.5 -2.5) (end -2.5 2.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 6030f791-ab7e-4174-bc65-799d0482f69d))
(fp_line (start -2.5 -1.75) (end -1.75 -1.75)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp cb55a6b7-0554-4c87-a4c3-c363e245940a))
(fp_line (start -2.5 1.75) (end -2.5 2.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 6bbd47be-5c2b-4152-9368-f6ca1ac6efb0))
(fp_line (start -2.5 2.5) (end -1.75 2.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 50a5e31d-90da-4ca0-9acf-b4e9cf095e9f))
(fp_line (start -2.5 2.5) (end 2.5 2.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 342cd87e-b8b7-417d-a5e1-1ce6e5c525ec))
(fp_line (start -1.75 -2.5) (end -2.5 -2.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp b4d03b32-c822-4a41-91ad-f5e06548876a))
(fp_line (start -1.75 -1.75) (end -1.75 -2.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 6ee63a4e-616b-4888-91f6-e39303467fab))
(fp_line (start -1.75 -1.75) (end -1.75 1.75)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 608164ac-85ef-4dcb-b384-fa12288f0ba6))
(fp_line (start -1.75 1.75) (end -2.5 1.75)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 8ef35e6a-ee0a-4c20-a67c-5fc773a095bb))
(fp_line (start -1.75 1.75) (end 1.75 1.75)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 046d2c13-f228-432e-8ab0-d83911e39041))
(fp_line (start -1.75 2.5) (end -1.75 1.75)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp ebdd919b-606e-45d2-ba55-298fd124c718))
(fp_line (start -1.5 -1.5) (end -1.5 1.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp c1b3f3d8-1e8f-4279-af17-989dab51a854))
(fp_line (start -1.5 1.5) (end 1.5 1.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 187242c3-845a-4b2b-98e2-f2d6ca6235ae))
(fp_line (start 1.5 -1.5) (end -1.5 -1.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 3f3bca60-51ab-46a9-9f62-9232d6559467))
(fp_line (start 1.5 1.5) (end 1.5 -1.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 7f0ba0a6-365f-405a-9d02-380b851f9cbb))
(fp_line (start 1.75 -2.5) (end 1.75 -1.75)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 9771213c-b42d-4e16-9865-cd3fcb9ec70f))
(fp_line (start 1.75 -1.75) (end -1.75 -1.75)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp b7b0709e-75b8-4d22-8738-3d5a0287e799))
(fp_line (start 1.75 -1.75) (end 2.5 -1.75)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 4c3a6c2e-928e-4f73-a108-110ba09a9288))
(fp_line (start 1.75 1.75) (end 1.75 -1.75)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 7b22b513-21df-4be5-8871-76be66f05a15))
(fp_line (start 1.75 1.75) (end 1.75 2.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp d9862dfc-26fd-4fbc-86fc-48fb26894f36))
(fp_line (start 1.75 2.5) (end 2.5 2.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 04c45a9a-e1fe-46d0-9007-15ec52812fc4))
(fp_line (start 2.5 -2.5) (end -2.5 -2.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 41eaed31-e342-4f43-926c-a66fbe808ecf))
(fp_line (start 2.5 -2.5) (end 1.75 -2.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 03fdc2ba-0a8e-4abd-9068-2f684fbeb53c))
(fp_line (start 2.5 -1.75) (end 2.5 -2.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 68481484-3ea1-40fc-8278-073fdd0fec2f))
(fp_line (start 2.5 1.75) (end 1.75 1.75)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp f2d8feed-1a40-492f-b1cf-ed3a9c089b42))
(fp_line (start 2.5 2.5) (end 2.5 -2.5)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp d93d3e43-3fed-481a-82cc-033a6958c94a))
(fp_line (start 2.5 2.5) (end 2.5 1.75)
(stroke (width 0.01) (type solid)) (layer "Eco1.User") (tstamp 9aea01ff-272c-4553-83ef-50762872aca1))
(fp_line (start -2.85 -2.85) (end -2.85 2.85)
(stroke (width 0.01) (type solid)) (layer "F.CrtYd") (tstamp cd1bd6d0-cb19-4e7f-9490-c45e6cb2f2b2))
(fp_line (start -2.85 2.85) (end 2.85 2.85)
(stroke (width 0.01) (type solid)) (layer "F.CrtYd") (tstamp 4c02122f-8aae-4ef7-852c-2699c92888b6))
(fp_line (start 2.85 -2.85) (end -2.85 -2.85)
(stroke (width 0.01) (type solid)) (layer "F.CrtYd") (tstamp ceb76797-0442-47d7-b690-760a823d50f0))
(fp_line (start 2.85 2.85) (end 2.85 -2.85)
(stroke (width 0.01) (type solid)) (layer "F.CrtYd") (tstamp c454246d-c8aa-49c1-b3ce-6624f1f93338))
(fp_line (start -2.5019 -1.9024) (end -2.5019 -1.5976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp b28ea4fe-7ca7-4f43-aef4-7302648cd4bd))
(fp_line (start -2.5019 -1.5976) (end -2.5019 -1.9024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 729b1b55-b766-4c9d-9c02-045a63451843))
(fp_line (start -2.5019 -1.4024) (end -2.5019 -1.0976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 2d3fbf84-ce53-40be-8592-f0fca141c012))
(fp_line (start -2.5019 -1.2319) (end -1.2319 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 66280522-8cc2-4459-a270-66c018c3bd97))
(fp_line (start -2.5019 -1.0976) (end -2.5019 -1.4024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 60f01d07-bf50-47c7-a61e-730ffebd70e5))
(fp_line (start -2.5019 -0.9024) (end -2.5019 -0.5976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp d1a70d42-3a04-4144-94bd-a2e39a02d37a))
(fp_line (start -2.5019 -0.5976) (end -2.5019 -0.9024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 485e5881-0533-44fc-986e-6a6040a2f05c))
(fp_line (start -2.5019 -0.4024) (end -2.5019 -0.0976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 8aeecff0-a0ef-4b8d-96dd-b6f5bebab1df))
(fp_line (start -2.5019 -0.0976) (end -2.5019 -0.4024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 5ef6e5de-834e-4a77-8d34-dbb666750e28))
(fp_line (start -2.5019 0.0976) (end -2.5019 0.4024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 4dabf7cc-8e09-4f65-8e1e-a3a3b6f38400))
(fp_line (start -2.5019 0.4024) (end -2.5019 0.0976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 8fa68438-11b7-446f-9c90-34deb39d34ac))
(fp_line (start -2.5019 0.5976) (end -2.5019 0.9024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 74551c47-6957-495d-b44c-6bf1efa84eec))
(fp_line (start -2.5019 0.9024) (end -2.5019 0.5976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 9a5698b1-8450-4e60-b598-46c6a2a389d5))
(fp_line (start -2.5019 1.0976) (end -2.5019 1.4024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 25eecaf5-f2ce-40b4-a36a-2b0c8e624afe))
(fp_line (start -2.5019 1.4024) (end -2.5019 1.0976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 4e16a7b3-b834-40fc-b344-4eeaeb2e8ce4))
(fp_line (start -2.5019 1.5976) (end -2.5019 1.9024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp c5a8fb95-fcc3-409b-8e74-3523ff8db92e))
(fp_line (start -2.5019 1.9024) (end -2.5019 1.5976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 4bb2a8fb-26d8-4b8d-a6f2-246c9e4792a2))
(fp_line (start -2.5 -2.5) (end -2.5 2.5)
(stroke (width 0.01) (type solid)) (layer "F.Fab") (tstamp 90a2909b-f365-4be6-9861-f5bb7f83f6ee))
(fp_line (start -2.5 2.5) (end 2.5 2.5)
(stroke (width 0.01) (type solid)) (layer "F.Fab") (tstamp 03a85d72-fca3-45ce-8da6-bf54e543b8f6))
(fp_line (start -1.9024 -2.5019) (end -1.5976 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 4069d8a3-31ed-4f59-9726-6e302cb7b715))
(fp_line (start -1.5976 -2.5019) (end -1.9024 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 485e8f20-6c7d-49c8-8463-0549e783839d))
(fp_line (start -1.5976 2.5019) (end -1.9024 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp aa5bdf55-f3f9-48a1-9ec9-3e5504e3b5d7))
(fp_line (start -1.4024 -2.5019) (end -1.0976 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp df158a87-5ff2-4137-b301-8a549085df50))
(fp_line (start -1.4024 2.5019) (end -1.0976 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 7ec23205-7d9a-40b3-a60e-e0c42a7dcff3))
(fp_line (start -1.0976 -2.5019) (end -1.4024 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 25088cd6-1ab8-46e3-afd6-1a572cfc522b))
(fp_line (start -1.0976 2.5019) (end -1.4024 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 15b43596-9fb5-4f0f-9a95-072b5d9f974d))
(fp_line (start -0.9024 -2.5019) (end -0.5976 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 0505d9e7-8d14-47b7-8da1-f0607eba35e4))
(fp_line (start -0.9024 2.5019) (end -0.5976 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 150c6b06-45aa-479b-9fb2-0b1ec0d37a43))
(fp_line (start -0.5976 -2.5019) (end -0.9024 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp e985d951-f4ef-44f1-97f9-4ecb991e267c))
(fp_line (start -0.5976 2.5019) (end -0.9024 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 6e14a478-7d38-44cb-9c55-24534bbd3ce1))
(fp_line (start -0.4024 -2.5019) (end -0.0976 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp baa5c256-2556-4d28-b591-4a7e8dfc5925))
(fp_line (start -0.4024 2.5019) (end -0.0976 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 1fada355-e8a0-4bc3-bfa4-ff5f9d5af50d))
(fp_line (start -0.0976 -2.5019) (end -0.4024 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 1811d296-ce47-4ae4-abea-b6a486c51eef))
(fp_line (start -0.0976 2.5019) (end -0.4024 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 4ad32e36-b542-4e3f-8e05-ed6e5729e0bf))
(fp_line (start 0.0976 -2.5019) (end 0.4024 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp b53ccdb7-2d14-4851-9f4f-d31940bfb980))
(fp_line (start 0.0976 2.5019) (end 0.4024 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 6c1904a5-01dd-4f04-9c2e-5d976ab24626))
(fp_line (start 0.4024 -2.5019) (end 0.0976 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp a68b78d1-9b9f-4301-9e8c-b49e81ab6819))
(fp_line (start 0.4024 2.5019) (end 0.0976 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 8593aec1-c4b6-412b-a897-e79dc47679dd))
(fp_line (start 0.5976 -2.5019) (end 0.9024 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 7b41bf98-eacb-4b74-9ad1-e68ee9d81505))
(fp_line (start 0.5976 2.5019) (end 0.9024 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 72e5b6dd-148c-433f-b75d-96911f6be51a))
(fp_line (start 0.9024 -2.5019) (end 0.5976 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 27c7d0b0-9e44-4286-a703-6b4a2e41f393))
(fp_line (start 0.9024 2.5019) (end 0.5976 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 3fa98199-5f93-4be9-a510-45b0fb364806))
(fp_line (start 1.0976 -2.5019) (end 1.4024 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 25eb81a8-1828-4580-bd90-4776fca0bd2d))
(fp_line (start 1.0976 2.5019) (end 1.4024 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 92a85c20-6c72-4139-b874-6f6e31b6d25d))
(fp_line (start 1.4024 -2.5019) (end 1.0976 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 2ca2511b-06b1-48ca-8906-b5663fe545ee))
(fp_line (start 1.4024 2.5019) (end 1.0976 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 0b1a0f94-e8b6-41f7-add5-23de9be00829))
(fp_line (start 1.5976 -2.5019) (end 1.9024 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp ec1c7b55-bbc0-4d1a-a6d3-7311569e9d91))
(fp_line (start 1.5976 2.5019) (end 1.9024 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp a8b51572-a71e-4b36-ad09-9c1439827c00))
(fp_line (start 1.9024 -2.5019) (end 1.5976 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 56eb7535-e15f-49f1-8a0e-bce1c8cceffb))
(fp_line (start 1.9024 2.5019) (end 1.5976 2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 978e2cd8-1920-4963-9ef8-ddbfbede7d18))
(fp_line (start 2.5 -2.5) (end -2.5 -2.5)
(stroke (width 0.01) (type solid)) (layer "F.Fab") (tstamp ce82d3db-702f-4dbf-a242-5d41213bcdfb))
(fp_line (start 2.5 2.5) (end 2.5 -2.5)
(stroke (width 0.01) (type solid)) (layer "F.Fab") (tstamp 698857a4-331d-4240-8d16-7a563d00b2b8))
(fp_line (start 2.5019 -2.5019) (end -2.5019 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 902777b4-fddc-442b-adcd-da5dc91f2f1e))
(fp_line (start 2.5019 -1.9024) (end 2.5019 -1.5976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp c2d21324-04ba-433d-8cca-f2a8e1ce947b))
(fp_line (start 2.5019 -1.5976) (end 2.5019 -1.9024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp caaad63f-6380-4789-96fc-9cfe782b37af))
(fp_line (start 2.5019 -1.4024) (end 2.5019 -1.0976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 8e17cb8c-8adb-4b6b-a676-6a37b53c3c80))
(fp_line (start 2.5019 -1.0976) (end 2.5019 -1.4024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp e902c399-aa98-4d40-91b1-62e4198230a4))
(fp_line (start 2.5019 -0.9024) (end 2.5019 -0.5976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 586ef6a8-e5b8-473e-b853-0f86025f2040))
(fp_line (start 2.5019 -0.5976) (end 2.5019 -0.9024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 54f64678-daf5-4a0f-9196-bd4ae9fcba73))
(fp_line (start 2.5019 -0.4024) (end 2.5019 -0.0976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp cd74d86e-1a1d-4d11-81cf-6b62c6fb435c))
(fp_line (start 2.5019 -0.0976) (end 2.5019 -0.4024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp b59c0dd6-9400-4e73-a3ff-284cb31298d7))
(fp_line (start 2.5019 0.0976) (end 2.5019 0.4024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 9563fba3-b1f2-4373-9d00-7e2a284abf3d))
(fp_line (start 2.5019 0.4024) (end 2.5019 0.0976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 893a3134-06f1-4f05-9bca-91f5ab1acf95))
(fp_line (start 2.5019 0.5976) (end 2.5019 0.9024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 7e5bf19e-4397-4de8-b73a-bbf8c321d1d5))
(fp_line (start 2.5019 0.9024) (end 2.5019 0.5976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp fe401756-80d0-4ba7-a332-31e8a8ca1d93))
(fp_line (start 2.5019 1.0976) (end 2.5019 1.4024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp fac2708d-4bd0-4cd0-a797-9fa509d66d2a))
(fp_line (start 2.5019 1.4024) (end 2.5019 1.0976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 8311ebff-d06b-45b8-b7cb-c888e09f5335))
(fp_line (start 2.5019 1.5976) (end 2.5019 1.9024)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 33c984f2-6da1-492b-8ea2-d08dadce75a8))
(fp_line (start 2.5019 1.9024) (end 2.5019 1.5976)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 6a142f82-96b9-4518-aee6-78ad64769ac8))
(fp_line (start 2.5019 2.5019) (end 2.5019 -2.5019)
(stroke (width 0.0254) (type solid)) (layer "F.Fab") (tstamp 0d641784-b3f3-471d-a8a2-f17bb6cdd15d))
(pad "1" smd rect (at -2.4003 -1.75) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp e68f7211-2a51-4e12-b294-031f7dc2130c))
(pad "2" smd rect (at -2.4003 -1.25) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp c962482e-1c33-43cc-aefa-f2f57a845028))
(pad "3" smd rect (at -2.4003 -0.75) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 5115fd75-42df-48da-8786-c8ca798f6375))
(pad "4" smd rect (at -2.4003 -0.25) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 1c2edfaf-e99c-42aa-9590-6d7d0c0bb90d))
(pad "5" smd rect (at -2.4003 0.25) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 912b1077-827a-43f0-9fe7-9b7420f1088a))
(pad "6" smd rect (at -2.4003 0.75) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 57fcc5a0-7a12-43f1-80b7-c161f831ffaa))
(pad "7" smd rect (at -2.4003 1.25) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp e82effd2-7e59-4ecc-8f18-65233e0d72bb))
(pad "8" smd rect (at -2.4003 1.75) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 412337c2-736f-48ab-aaa3-d3a9de63ba5d))
(pad "9" smd rect (at -1.75 2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp f3e7a204-24e0-409f-9a7a-1a02bbe012d2))
(pad "10" smd rect (at -1.25 2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 3b4bea7a-9302-4c5c-b6be-f19d4a6c3482))
(pad "11" smd rect (at -0.75 2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 64c8206f-2949-4329-8820-827c5adb7f08))
(pad "12" smd rect (at -0.25 2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp e5fc8ace-35d6-47b4-808d-d4503869f0b7))
(pad "13" smd rect (at 0.25 2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 71a2f6c1-a31a-4fb8-94bb-85b29356da6a))
(pad "14" smd rect (at 0.75 2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 4e46d619-f7ed-44a8-98cb-2f4e491f2fc0))
(pad "15" smd rect (at 1.25 2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp d8dfc3a3-9769-47d5-8dba-40674fa079da))
(pad "16" smd rect (at 1.75 2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 587cfcd8-9ac5-4a3d-b53a-e987297aa61c))
(pad "17" smd rect (at 2.4003 1.75) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 5e3693fb-fea1-46f5-acb8-29ae8c2392d1))
(pad "18" smd rect (at 2.4003 1.25) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp fff6e556-f720-43a1-82c7-40633b2ed33a))
(pad "19" smd rect (at 2.4003 0.75) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 9629097e-d49f-43e0-adc2-d27398435d53))
(pad "20" smd rect (at 2.4003 0.25) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp b28039a7-b00c-4a2d-8198-bf449f96a9b6))
(pad "21" smd rect (at 2.4003 -0.25) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp d77e62fd-5902-4eee-a0d6-498bded5fdbd))
(pad "22" smd rect (at 2.4003 -0.75) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp ba9498cb-dd1a-419f-ae4a-272d66bf66e1))
(pad "23" smd rect (at 2.4003 -1.25) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 04d9f9f8-04d6-4a99-8b82-83f802475aa4))
(pad "24" smd rect (at 2.4003 -1.75) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 7c40046b-7f0b-44c4-9401-72c7a4fb7827))
(pad "25" smd rect (at 1.75 -2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp a396e70e-a033-4cc2-a1f4-feb31c7a0996))
(pad "26" smd rect (at 1.25 -2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp c97c014a-8b63-4aec-bd3e-56fc7db9e3c7))
(pad "27" smd rect (at 0.75 -2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 80c0d66d-2b5f-4c8f-9fb4-2b431c72fbad))
(pad "28" smd rect (at 0.25 -2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 1730799c-52e3-4fbc-a0ea-d11bb3ece684))
(pad "29" smd rect (at -0.25 -2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 7ec5a5c6-9698-4d61-b6c3-4745e287f623))
(pad "30" smd rect (at -0.75 -2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp df181f7c-e264-4347-9d33-8186d10394f2))
(pad "31" smd rect (at -1.25 -2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 82267ab0-f866-4748-87c3-bf397f3a4ab0))
(pad "32" smd rect (at -1.75 -2.4003 270) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0659) (thermal_bridge_angle 45) (tstamp 14ec3448-e923-4395-a76d-a121d194efc7))
(pad "33" thru_hole circle (at -0.8 -0.8) (size 0.3 0.3) (drill 0.2) (layers "*.Cu") (tstamp fdda2038-465e-4151-a5ae-8860c08125cf))
(pad "33" smd custom (at -0.8 -0.8) (size 0.3 0.3) (layers "F.Cu")
(thermal_bridge_angle 45)
(options (clearance outline) (anchor circle))
(primitives
(gr_poly
(pts
(xy 2.30898 -0.70898)
(xy 2.3127 -0.7)
(xy 2.3127 2.3)
(xy 2.30898 2.30898)
(xy 2.3 2.3127)
(xy -0.7 2.3127)
(xy -0.70898 2.30898)
(xy -0.7127 2.3)
(xy -0.7127 -0.7)
(xy -0.70898 -0.70898)
(xy -0.7 -0.7127)
(xy 2.3 -0.7127)
)
(width 0) (fill yes))
) (tstamp 5c9904d1-5930-4716-8701-acb9ae3de775))
(pad "33" thru_hole circle (at -0.8 0) (size 0.3 0.3) (drill 0.2) (layers "*.Cu") (tstamp 14e6b7f0-a9dd-4014-b6a4-d0dcddc992d9))
(pad "33" thru_hole circle (at -0.8 0.8) (size 0.3 0.3) (drill 0.2) (layers "*.Cu") (tstamp dd86521d-61d7-4e2a-b4fd-75e17a9044c2))
(pad "33" thru_hole circle (at 0 -0.8) (size 0.3 0.3) (drill 0.2) (layers "*.Cu") (tstamp 84145658-d4b5-4d81-a915-7fc6ef93e8f9))
(pad "33" thru_hole circle (at 0 0) (size 0.3 0.3) (drill 0.2) (layers "*.Cu") (tstamp b4c1a8da-7416-4c76-a6b4-55c1b937b0d3))
(pad "33" thru_hole circle (at 0 0.8) (size 0.3 0.3) (drill 0.2) (layers "*.Cu") (tstamp b3686c13-0b66-44cb-b048-decaf6b3f728))
(pad "33" thru_hole circle (at 0.8 -0.8) (size 0.3 0.3) (drill 0.2) (layers "*.Cu") (tstamp 39b9a055-c4fe-4864-88df-e6fa1e208d3f))
(pad "33" thru_hole circle (at 0.8 0) (size 0.3 0.3) (drill 0.2) (layers "*.Cu") (tstamp 3bf2c3d7-4766-40d1-b698-d214cea20c5f))
(pad "33" thru_hole circle (at 0.8 0.8) (size 0.3 0.3) (drill 0.2) (layers "*.Cu") (tstamp 931e6623-1572-440b-94c4-599176e2f580))
)

View File

@ -299,10 +299,22 @@ void CheckFpPad( const PAD* expected, const PAD* pad )
BOOST_CHECK_EQUAL( expected->GetRemoveUnconnected(), pad->GetRemoveUnconnected() );
BOOST_CHECK_EQUAL( expected->GetKeepTopBottom(), pad->GetKeepTopBottom() );
// TODO: check complex pad shapes
// TODO: did we check everything for complex pad shapes?
CHECK_ENUM_CLASS_EQUAL( expected->GetAnchorPadShape(), pad->GetAnchorPadShape() );
CHECK_ENUM_CLASS_EQUAL( expected->GetCustomShapeInZoneOpt(),
pad->GetCustomShapeInZoneOpt() );
BOOST_CHECK_EQUAL( expected->GetPrimitives().size(), pad->GetPrimitives().size() );
if( expected->GetPrimitives().size() == pad->GetPrimitives().size() )
{
for( size_t i = 0; i < expected->GetPrimitives().size(); ++i )
{
CheckFpShape( expected->GetPrimitives().at( i ).get(),
pad->GetPrimitives().at( i ).get() );
}
}
}
}
@ -437,7 +449,33 @@ void CheckShapePolySet( const SHAPE_POLY_SET* expected, const SHAPE_POLY_SET* po
BOOST_CHECK_EQUAL( expected->OutlineCount(), polyset->OutlineCount() );
BOOST_CHECK_EQUAL( expected->TotalVertices(), polyset->TotalVertices() );
// TODO: check all outlines and holes
if( expected->OutlineCount() != polyset->OutlineCount() )
return; // don't check the rest
if( expected->TotalVertices() != polyset->TotalVertices() )
return; // don't check the rest
// TODO: check all outlines and holes (just checking outlines for now)
for( int i = 0; i < expected->OutlineCount(); ++i )
{
BOOST_TEST_CONTEXT( "Outline " << i )
{
BOOST_CHECK_EQUAL( expected->Outline( i ).ArcCount(),
polyset->Outline( i ).ArcCount() );
BOOST_CHECK_EQUAL( expected->Outline( i ).PointCount(),
polyset->Outline( i ).PointCount() );
if( expected->Outline( i ).PointCount() != polyset->Outline( i ).PointCount() )
return; // don't check the rest
for( int j = 0; j < expected->Outline( i ).PointCount(); ++j )
{
BOOST_CHECK_EQUAL( expected->Outline( i ).GetPoint( j ),
polyset->Outline( i ).GetPoint( j ) );
}
}
}
}
}

View File

@ -52,6 +52,7 @@ set( QA_PCBNEW_SRCS
plugins/altium/test_altium_rule_transformer.cpp
plugins/altium/test_altium_pcblib_import.cpp
plugins/cadstar/test_cadstar_footprints.cpp
plugins/eagle/test_eagle_lbr_import.cpp
group_saveload.cpp

View File

@ -0,0 +1,101 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2023 Roberto Fernandez Bautista <roberto.fer.bau@gmail.com>
* Copyright (C) 2023 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program 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.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @file test_cadstar_footprints.cpp
* Test suite for import of cadstar *.cpa footprints files
*/
#include <pcbnew_utils/board_test_utils.h>
#include <pcbnew_utils/board_file_utils.h>
#include <qa_utils/wx_utils/unit_test_utils.h>
#include <pcbnew/plugins/cadstar/cadstar_pcb_archive_plugin.h>
#include <pcbnew/plugins/kicad/pcb_plugin.h>
#include <footprint.h>
#include <pad.h>
#include <zone.h>
struct CADSTAR_IMPORT_FIXTURE
{
CADSTAR_IMPORT_FIXTURE() {}
CADSTAR_PCB_ARCHIVE_PLUGIN cstarPlugin;
PCB_PLUGIN kicadPlugin;
};
BOOST_FIXTURE_TEST_SUITE( CadstarFootprintsImport, CADSTAR_IMPORT_FIXTURE )
/**
* Compare all footprints with their KiCad reference footprint
* TODO: Refactor this code so it can be made common to all importers!
* (right now this is copy/paste from EAGLE)
*/
BOOST_AUTO_TEST_CASE( CadstarFootprintImport )
{
std::vector<std::pair<wxString, wxString>> tests = {
{ "footprint-with-thermal-pad.cpa", "footprint-with-thermal-pad.pretty" }
};
std::string dataPath = KI_TEST::GetPcbnewTestDataDir() + "plugins/cadstar/lib/";
for( const std::pair<wxString, wxString>& libName : tests )
{
wxString cstarLibraryPath = dataPath + libName.first;
wxString kicadLibraryPath = dataPath + libName.second;
wxArrayString cstarFootprintNames;
wxArrayString kicadFootprintNames;
cstarPlugin.FootprintEnumerate( cstarFootprintNames, cstarLibraryPath, true, nullptr );
kicadPlugin.FootprintEnumerate( kicadFootprintNames, kicadLibraryPath, true, nullptr );
BOOST_CHECK_EQUAL( cstarFootprintNames.GetCount(), kicadFootprintNames.GetCount() );
for( size_t i = 0; i < cstarFootprintNames.GetCount(); i++ )
{
wxString footprintName = cstarFootprintNames[i];
BOOST_TEST_CONTEXT( wxString::Format( wxT( "Import '%s' from '%s'" ), footprintName,
libName.first ) )
{
FOOTPRINT* eagleFp = cstarPlugin.FootprintLoad( cstarLibraryPath, footprintName,
false, nullptr );
BOOST_CHECK( eagleFp );
BOOST_CHECK_EQUAL( wxT( "REF**" ), eagleFp->GetReference() );
BOOST_CHECK_EQUAL( footprintName, eagleFp->GetValue() );
FOOTPRINT* kicadFp =
kicadPlugin.FootprintLoad( kicadLibraryPath, footprintName, true, nullptr );
BOOST_CHECK( kicadFp );
KI_TEST::CheckFootprint( kicadFp, eagleFp );
}
}
}
}
BOOST_AUTO_TEST_SUITE_END()