diff --git a/pcbnew/pcb_io/altium/altium_parser_pcb.cpp b/pcbnew/pcb_io/altium/altium_parser_pcb.cpp index 5b84bbd94d..a539ce3e0a 100644 --- a/pcbnew/pcb_io/altium/altium_parser_pcb.cpp +++ b/pcbnew/pcb_io/altium/altium_parser_pcb.cpp @@ -1009,13 +1009,24 @@ ATEXT6::ATEXT6( ALTIUM_BINARY_PARSER& aReader, std::map& aSt aReader.Skip( 4 ); position = aReader.ReadVector2IPos(); height = aReader.ReadKicadUnit(); - aReader.Skip( 2 ); + strokefonttype = static_cast( aReader.Read() ); + // TODO: The Serif font type doesn't match well with KiCad, we should replace it with a better match + rotation = aReader.Read(); isMirrored = aReader.Read() != 0; strokewidth = aReader.ReadKicadUnit(); + + if( subrecord1 < 123 ) + { + fonttype = ALTIUM_TEXT_TYPE::STROKE; + aReader.SkipSubrecord(); + return; + } + isComment = aReader.Read() != 0; isDesignator = aReader.Read() != 0; - aReader.Skip( 2 ); + aReader.Skip( 1 ); + fonttype = static_cast( aReader.Read() ); isBold = aReader.Read() != 0; isItalic = aReader.Read() != 0; @@ -1023,17 +1034,11 @@ ATEXT6::ATEXT6( ALTIUM_BINARY_PARSER& aReader, std::map& aSt aReader.ReadBytes( fontData, sizeof( fontData ) ); fontname = wxString( fontData, wxMBConvUTF16LE(), sizeof( fontData ) ).BeforeFirst( '\0' ); - isInverted = aReader.Read() != 0; + char tmpbyte = aReader.Read(); + isInverted = !!tmpbyte; + inverted_borderwidth = aReader.ReadKicadUnit(); + widestring_index = aReader.Read(); aReader.Skip( 4 ); - uint32_t stringIndex = aReader.Read(); - aReader.Skip( 13 ); - textposition = static_cast( aReader.Read() ); - /** - * In Altium 14 (subrecord1 == 230) only left bottom is valid? I think there is a bit missing. - * https://gitlab.com/kicad/code/kicad/-/merge_requests/60#note_274913397 - */ - if( subrecord1 <= 230 ) - textposition = ALTIUM_TEXT_POSITION::LEFT_BOTTOM; // An inverted rect in Altium is like a text box with the text inverted. isInvertedRect = aReader.Read() != 0; @@ -1047,7 +1052,7 @@ ATEXT6::ATEXT6( ALTIUM_BINARY_PARSER& aReader, std::map& aSt // Subrecord 2 - Legacy 8bit string, max 255 chars, unknown codepage aReader.ReadAndSetSubrecordLength(); - auto entry = aStringTable.find( stringIndex ); + auto entry = aStringTable.find( widestring_index ); if( entry != aStringTable.end() ) text = entry->second; @@ -1059,6 +1064,13 @@ ATEXT6::ATEXT6( ALTIUM_BINARY_PARSER& aReader, std::map& aSt aReader.SkipSubrecord(); + // Altium only supports inverting truetype fonts + if( fonttype != ALTIUM_TEXT_TYPE::TRUETYPE ) + { + isInverted = false; + isInvertedRect = false; + } + if( aReader.HasParsingError() ) THROW_IO_ERROR( wxT( "Texts6 stream was not parsed correctly" ) ); } diff --git a/pcbnew/pcb_io/altium/altium_parser_pcb.h b/pcbnew/pcb_io/altium/altium_parser_pcb.h index 0cf517412d..e5dcfd4929 100644 --- a/pcbnew/pcb_io/altium/altium_parser_pcb.h +++ b/pcbnew/pcb_io/altium/altium_parser_pcb.h @@ -718,6 +718,14 @@ struct ATRACK6 struct ATEXT6 { + enum class STROKE_FONT_TYPE + { + DEFAULT = 1, + SANSSERIF = 2, + SERIF = 3 + }; + + ALTIUM_LAYER layer; uint16_t component; @@ -725,7 +733,7 @@ struct ATEXT6 uint32_t height; double rotation; uint32_t strokewidth; - ALTIUM_TEXT_POSITION textposition; + STROKE_FONT_TYPE strokefonttype; bool isBold; bool isItalic; diff --git a/pcbnew/pcb_io/altium/altium_pcb.cpp b/pcbnew/pcb_io/altium/altium_pcb.cpp index 3fed60e0a7..4fa5efce51 100644 --- a/pcbnew/pcb_io/altium/altium_pcb.cpp +++ b/pcbnew/pcb_io/altium/altium_pcb.cpp @@ -2914,6 +2914,7 @@ void ALTIUM_PCB::ConvertVias6ToFootprintItem( FOOTPRINT* aFootprint, const AVIA6 pad->SetNumber( "" ); pad->SetNetCode( GetNetCode( aElem.net ) ); + pad->SetKeepTopBottom( false ); pad->SetPosition( aElem.position ); pad->SetSize( VECTOR2I( aElem.diameter, aElem.diameter ) ); pad->SetDrillSize( VECTOR2I( aElem.holesize, aElem.holesize ) ); @@ -3935,6 +3936,7 @@ void ALTIUM_PCB::ConvertTexts6ToBoardItemOnLayer( const ATEXT6& aElem, PCB_LAYER { "PRINT_DATE", "CURRENT_DATE"}, }; + wxString kicadText = AltiumPcbSpecialStringsToKiCadStrings( aElem.text, variableMap ); BOARD_ITEM* item = pcbText.get(); EDA_TEXT* text = pcbText.get(); @@ -3947,7 +3949,7 @@ void ALTIUM_PCB::ConvertTexts6ToBoardItemOnLayer( const ATEXT6& aElem, PCB_LAYER item = pcbTextbox.get(); text = pcbTextbox.get(); pcbTextbox->SetPosition( aElem.position ); - pcbTextbox->SetRectangle( -aElem.textbox_rect_height, aElem.textbox_rect_width ); + pcbTextbox->SetRectangle( aElem.textbox_rect_height, aElem.textbox_rect_width ); switch( aElem.textbox_rect_justification ) { @@ -4046,10 +4048,11 @@ void ALTIUM_PCB::ConvertTexts6ToFootprintItemOnLayer( FOOTPRINT* aFootprint, con wxString kicadText = AltiumPcbSpecialStringsToKiCadStrings( aElem.text, variableMap ); - text->SetText(kicadText); - text->SetKeepUpright( false ); - item->SetLayer( aLayer ); - item->SetIsKnockout( aElem.isInverted ); + fpText->SetText(kicadText); + fpText->SetKeepUpright( false ); + fpText->SetLayer( aLayer ); + fpText->SetPosition( aElem.position ); + fpText->SetIsKnockout( aElem.isInverted ); if( isTextbox ) { @@ -4099,7 +4102,7 @@ void ALTIUM_PCB::ConvertTexts6ToFootprintItemOnLayer( FOOTPRINT* aFootprint, con field->SetPosition( aElem.position ); } - ConvertTexts6ToEdaTextSettings( aElem, *text ); + ConvertTexts6ToEdaTextSettings( aElem, text ); if( toAdd ) { @@ -4138,6 +4141,9 @@ void ALTIUM_PCB::ConvertTexts6ToEdaTextSettings( const ATEXT6& aElem, EDA_TEXT* aEdaText->SetItalic( aElem.isItalic ); aEdaText->SetMirrored( aElem.isMirrored ); aEdaText->SetTextAngle( EDA_ANGLE( aElem.rotation, DEGREES_T ) ); + + aEdaText->SetHorizJustify( GR_TEXT_H_ALIGN_LEFT ); + aEdaText->SetVertJustify( GR_TEXT_V_ALIGN_BOTTOM ); } diff --git a/qa/data/pcbnew/plugins/altium/pcblib/Espressif ESP32-WROOM-32.pretty/Espressif ESP32-WROOM-32.kicad_mod b/qa/data/pcbnew/plugins/altium/pcblib/Espressif ESP32-WROOM-32.pretty/Espressif ESP32-WROOM-32.kicad_mod index 6e078485b9..6c7bd400b0 100644 --- a/qa/data/pcbnew/plugins/altium/pcblib/Espressif ESP32-WROOM-32.pretty/Espressif ESP32-WROOM-32.kicad_mod +++ b/qa/data/pcbnew/plugins/altium/pcblib/Espressif ESP32-WROOM-32.pretty/Espressif ESP32-WROOM-32.kicad_mod @@ -1,671 +1,315 @@ -(footprint "Espressif ESP32-WROOM-32" - (version 20240108) - (generator "pcbnew") - (generator_version "8.0") - (layer "F.Cu") - (descr "39-SMD Module") - (property "Reference" "REF**" - (at -0.7949 -15.8 0) - (unlocked yes) - (layer "F.SilkS") - (uuid "e86c5289-cb53-49f4-b61a-8baeb9261682") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "Espressif ESP32-WROOM-32" - (at -0.7949 11.7 0) - (unlocked yes) - (layer "F.Fab") - (uuid "81ec18a6-dce6-49aa-b59c-30114353b268") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Footprint" "Espressif ESP32-WROOM-32" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "d4c0bd0e-37ad-4850-b70d-aa72de04190e") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "4ad78952-d9c9-4b33-b810-313f34611a71") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Description" "" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "cc19605b-506b-496a-8138-e88f3cdba85a") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (fp_rect - (start -4 3) - (end 2 -3) - (stroke - (width 0) - (type default) - ) - (fill solid) - (layer "F.Cu") - (uuid "cc35b043-6986-447a-bcaa-0e9eb62616eb") - ) - (fp_rect - (start -4 3) - (end 2 -3) - (stroke - (width 0) - (type default) - ) - (fill solid) - (layer "B.Cu") - (uuid "782550ba-2fe9-404c-84a8-db3932565d44") - ) - (fp_line - (start -9 -15) - (end 9 -15) - (stroke - (width 0.2) - (type solid) - ) - (layer "F.SilkS") - (uuid "67d81324-ca01-4ad0-a67a-4005e0154490") - ) - (fp_line - (start -9 -8.3) - (end -9 -15) - (stroke - (width 0.2) - (type solid) - ) - (layer "F.SilkS") - (uuid "af02e358-d76a-4d1b-b0f6-40d18d17c8fc") - ) - (fp_line - (start -9 10.5) - (end -9 9.6) - (stroke - (width 0.2) - (type solid) - ) - (layer "F.SilkS") - (uuid "be2b705a-d300-4dd3-9e29-7d5604ab5296") - ) - (fp_line - (start -9 10.5) - (end -6.4 10.5) - (stroke - (width 0.2) - (type solid) - ) - (layer "F.SilkS") - (uuid "cfee0109-0172-4bfe-aaae-c388cd53596f") - ) - (fp_line - (start 6.4 10.5) - (end 9 10.5) - (stroke - (width 0.2) - (type solid) - ) - (layer "F.SilkS") - (uuid "f08bd4f8-8d5f-4376-bbed-a7edf06f810b") - ) - (fp_line - (start 9 -8.3) - (end 9 -15) - (stroke - (width 0.2) - (type solid) - ) - (layer "F.SilkS") - (uuid "f88f483c-af9a-4c56-a92d-00de32ffd17e") - ) - (fp_line - (start 9 10.5) - (end 9 9.6) - (stroke - (width 0.2) - (type solid) - ) - (layer "F.SilkS") - (uuid "9a3ad0c4-3c41-4704-bf26-12805d7404e4") - ) - (fp_circle - (center -10.4648 -7.62) - (end -10.4648 -7.87) - (stroke - (width 0.75) - (type solid) - ) - (fill none) - (layer "F.SilkS") - (uuid "e4e4440c-e629-42f8-ada2-30d1d9420f64") - ) - (fp_line - (start -9.7 -15.2) - (end 9.7 -15.2) - (stroke - (width 0.05) - (type solid) - ) - (layer "Eco2.User") - (uuid "451a10e9-6d9c-4e49-8c0a-5e728c75a075") - ) - (fp_line - (start -9.7 11.2) - (end -9.7 -15.2) - (stroke - (width 0.05) - (type solid) - ) - (layer "Eco2.User") - (uuid "65d46d73-bac5-41d6-8797-882c3f0d54be") - ) - (fp_line - (start -9.7 11.2) - (end 9.7 11.2) - (stroke - (width 0.05) - (type solid) - ) - (layer "Eco2.User") - (uuid "3344f71c-4ab1-428a-a05c-05aaa0fcdc4d") - ) - (fp_line - (start -0.5 -0.001) - (end 0.5 -0.001) - (stroke - (width 0.05) - (type solid) - ) - (layer "Eco2.User") - (uuid "7c9a7c5b-725a-46a1-8fea-a01aa730e156") - ) - (fp_line - (start 0 0.499) - (end 0 -0.501) - (stroke - (width 0.05) - (type solid) - ) - (layer "Eco2.User") - (uuid "c85dc972-4566-4183-bb36-b22657f50b08") - ) - (fp_line - (start 9.7 11.2) - (end 9.7 -15.2) - (stroke - (width 0.05) - (type solid) - ) - (layer "Eco2.User") - (uuid "50c35ea7-bf56-49d4-916e-d93833414495") - ) - (fp_line - (start -9 -15) - (end 9 -15) - (stroke - (width 0.1) - (type solid) - ) - (layer "B.Fab") - (uuid "6baa9dd8-c950-4dc1-b811-2845822d4111") - ) - (fp_line - (start -9 10.5) - (end -9 -15) - (stroke - (width 0.1) - (type solid) - ) - (layer "B.Fab") - (uuid "9df8ac18-2784-4334-8bdf-43c18f21377a") - ) - (fp_line - (start -9 10.5) - (end 9 10.5) - (stroke - (width 0.1) - (type solid) - ) - (layer "B.Fab") - (uuid "233f0868-4368-4a8c-a8ae-ad6165e89871") - ) - (fp_line - (start 9 10.5) - (end 9 -15) - (stroke - (width 0.1) - (type solid) - ) - (layer "B.Fab") - (uuid "3cf29f0a-9eab-4b37-8ddf-e3fa86a8db59") - ) - (fp_circle - (center -7.9 -7.6) - (end -7.9 -8.1) - (stroke - (width 0.1) - (type solid) - ) - (fill none) - (layer "B.Fab") - (uuid "6b6278c5-995b-4a5f-8b5c-5eb1e68cad19") - ) - (pad "1" smd roundrect - (at -8.5 -7.51) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "54ba3566-b09a-4fc4-aa83-8d49dbfbdba5") - ) - (pad "2" smd roundrect - (at -8.5 -6.24) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "19ed72d5-69da-443c-a447-06ffe301041f") - ) - (pad "3" smd roundrect - (at -8.5 -4.97) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "2d342e9a-fc86-4ca2-98b0-ff0f4acf4768") - ) - (pad "4" smd roundrect - (at -8.5 -3.7) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "8c7a05fe-acab-46aa-99db-130f9d4e64e0") - ) - (pad "5" smd roundrect - (at -8.5 -2.43) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "424362f8-fd09-43da-99fe-ec31d9648051") - ) - (pad "6" smd roundrect - (at -8.5 -1.16) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "a6272ba8-17e8-4b24-ab4b-9c17094c313c") - ) - (pad "7" smd roundrect - (at -8.5 0.11) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "ab57c4c8-1670-4531-9612-d80a38d8689a") - ) - (pad "8" smd roundrect - (at -8.5 1.38) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "44880566-7a0e-4079-bd1c-68e088a1bbed") - ) - (pad "9" smd roundrect - (at -8.5 2.65) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "d01e07d3-2f10-4f0b-adb2-e0ff5575ae6c") - ) - (pad "10" smd roundrect - (at -8.5 3.92) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "ffcd31f7-ad65-468b-b645-491108568ffb") - ) - (pad "11" smd roundrect - (at -8.5 5.19 180) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "e76ba829-c6b8-4f54-95f0-3c52759a5412") - ) - (pad "12" smd roundrect - (at -8.5 6.46 180) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "5f837dfb-977d-47d6-b070-ff0984184d64") - ) - (pad "13" smd roundrect - (at -8.5 7.73 180) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "8bd8c2cf-8e7a-49e5-b8d9-c3510b27fa3f") - ) - (pad "14" smd roundrect - (at -8.5 9 180) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "4f0b919f-f441-48f7-8e9d-6e8a10a4aeac") - ) - (pad "15" smd roundrect - (at -5.715 10 270) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "60e3fbbb-6042-4b2b-ab58-7eb9b8a9d099") - ) - (pad "16" smd roundrect - (at -4.445 10 90) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "9b9668d3-416a-4165-afd4-c0d22f495e0e") - ) - (pad "17" smd roundrect - (at -3.175 10 90) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "dce007eb-dddf-4750-8954-5c8c395077b8") - ) - (pad "18" smd roundrect - (at -1.905 10 90) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "74f2cea0-3c49-4231-a4de-138c12e102e6") - ) - (pad "19" smd roundrect - (at -0.635 10 90) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "d22ae084-e7ff-4224-95b9-a63e4ac8f3c4") - ) - (pad "20" smd roundrect - (at 0.635 10 90) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "24d37bfe-12e1-4059-aca0-78971d138f12") - ) - (pad "21" smd roundrect - (at 1.905 10 90) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "ca8c63a6-ebbc-4e44-9b02-1bed2d1792fe") - ) - (pad "22" smd roundrect - (at 3.175 10 90) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "d096f2ce-0d6f-4d25-8f0e-1a3c9cf080aa") - ) - (pad "23" smd roundrect - (at 4.445 10 90) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "c3fe2d70-ae60-4aa5-9c11-f329cd885e57") - ) - (pad "24" smd roundrect - (at 5.715 10 90) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "b89e939a-f176-49d3-a9c7-12b953da7d39") - ) - (pad "25" smd roundrect - (at 8.5 9) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "f9405a49-ad8a-418a-afeb-41619e5c02f4") - ) - (pad "26" smd roundrect - (at 8.5 7.73) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "4920493c-867d-45af-a851-0886734db8cd") - ) - (pad "27" smd roundrect - (at 8.5 6.46) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "4e5fddb1-2b36-4ca8-82fe-dc1aab0e5da7") - ) - (pad "28" smd roundrect - (at 8.5 5.19) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "08c1196e-35eb-49f8-8aee-4bc958945a5c") - ) - (pad "29" smd roundrect - (at 8.5 3.92) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "53ab5511-6f4d-44ba-8025-b6ccc4bc6b9d") - ) - (pad "30" smd roundrect - (at 8.5 2.65) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (roundrect_rratio 0.05) - (solder_mask_margin 0.05) - (uuid "9b500d6e-8e5c-4bca-8dfc-18a1ff2229fe") - ) - (pad "31" smd rect - (at 8.5 1.38) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "a9dff6e2-7eda-461e-9556-797103a065dd") - ) - (pad "32" smd rect - (at 8.5 0.11) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "a70aec46-1cbf-40f1-9c0b-fad50c82793c") - ) - (pad "33" smd rect - (at 8.5 -1.16) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "18e5437a-6ff5-4fc3-a207-3d37ef2695b2") - ) - (pad "34" smd rect - (at 8.5 -2.43) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "853a3caa-acc4-41a5-982b-7449220516e4") - ) - (pad "35" smd rect - (at 8.5 -3.7) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "215fb439-853c-49b2-aae2-4398d0802b12") - ) - (pad "36" smd rect - (at 8.5 -4.97) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "0be76498-ce87-48e2-8efc-745931fc9f52") - ) - (pad "37" smd rect - (at 8.5 -6.24) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "3d298c5c-4c03-4d24-8515-03f2bd961cc4") - ) - (pad "38" smd rect - (at 8.5 -7.51) - (size 2 0.9) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "b059ef6e-c6a1-40ea-9dee-e96f0cc9743d") - ) - (pad "39" smd rect - (at -2.835 -1.835) - (size 1.33 1.33) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "6c73264c-85e7-4541-9455-c3c35d038637") - ) - (pad "39" smd rect - (at -2.835 0 90) - (size 1.33 1.33) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "a19c1431-f68f-45b2-a431-675a24e54e9f") - ) - (pad "39" smd rect - (at -2.835 1.835 180) - (size 1.33 1.33) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "ad0157fd-a574-47ab-98b2-39dd4eedd488") - ) - (pad "39" smd rect - (at -1 -1.835) - (size 1.33 1.33) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "df54c599-70f5-40ca-a0ab-c28249a530b7") - ) - (pad "39" smd rect - (at -1 0) - (size 1.33 1.33) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "f9fd6f37-3763-4b02-8996-96f41a64ce5b") - ) - (pad "39" smd rect - (at -1 1.835 180) - (size 1.33 1.33) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "d58401f4-e240-45ef-b740-3a2109ed20f2") - ) - (pad "39" smd rect - (at 0.835 -1.835) - (size 1.33 1.33) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "939b0b61-d26d-44dd-be7d-f50cf7b7e601") - ) - (pad "39" smd rect - (at 0.835 0 270) - (size 1.33 1.33) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "0dfda696-0635-4aca-ad04-57d49bd82559") - ) - (pad "39" smd rect - (at 0.835 1.835 180) - (size 1.33 1.33) - (layers "F.Cu" "F.Paste" "F.Mask") - (solder_mask_margin 0.05) - (uuid "14e90ddb-5799-4c83-ab52-1d088544801d") - ) - (zone - (net 0) - (net_name "") - (layers "*.Cu") - (uuid "bfe5168b-00a3-4d1b-8922-5d3f679c9723") - (hatch edge 0.5) - (connect_pads - (clearance 0) - ) - (min_thickness 0.25) - (filled_areas_thickness no) - (keepout - (tracks not_allowed) - (vias not_allowed) - (pads not_allowed) - (copperpour not_allowed) - (footprints allowed) - ) - (fill - (thermal_gap 0.5) - (thermal_bridge_width 0.5) - ) - (polygon - (pts - (xy -9 -15) (xy 9 -15) (xy 9 -8.7) (xy -9 -8.7) - ) - ) - ) +(footprint "Espressif ESP32-WROOM-32" (version 20240108) (generator "pcbnew") (generator_version "8.0") + (layer "F.Cu") + (descr "39-SMD Module") + (property "Reference" "REF**" (at -0.7949 -15.8 0) (layer "F.SilkS")(uuid "1ba00595-7cdb-41da-b2d6-fe1e55aedb5a") + (effects (font (size 1 1) (thickness 0.15))) + ) + (property "Value" "Espressif ESP32-WROOM-32" (at -0.7949 11.7 0) (layer "F.Fab")(uuid "a0b801f8-67b0-40af-bc74-5fb922536f1e") + (effects (font (size 1 1) (thickness 0.15))) + ) + (property "Footprint" "" (at 0 0 0) (layer "F.Fab")(hide yes) +(uuid "d11e7180-2d21-44b8-82e1-14dfae92478f") + (effects (font (size 1 1) (thickness 0.15))) + ) + (property "Datasheet" "" (at 0 0 0) (layer "F.Fab")(hide yes) +(uuid "9a20ae60-6735-491f-b2ce-7be2e1ce8201") + (effects (font (size 1 1) (thickness 0.15))) + ) + (property "Description" "" (at 0 0 0) (layer "F.Fab")(hide yes) +(uuid "c9846f16-7334-4c7e-9942-76164abfe712") + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_rect (start -4 3) (end 2 -3) + (stroke (width 0) (type default)) (fill solid) (layer "F.Cu")(uuid "53a0d484-ba4a-473a-813a-78ba00c68775")) + (fp_rect (start -4 3) (end 2 -3) + (stroke (width 0) (type default)) (fill solid) (layer "B.Cu")(uuid "6f10dc95-dd4b-4c58-8b3f-1c01f0ee7340")) + (fp_line (start -9 -15) (end 9 -15) + (stroke (width 0.2) (type solid)) (layer "F.SilkS")(uuid "80691bf8-c994-4d7f-b35a-ca2db09f8f30")) + (fp_line (start -9 -8.3) (end -9 -15) + (stroke (width 0.2) (type solid)) (layer "F.SilkS")(uuid "c0fc8e99-faa2-4f86-9767-2abba0af87d1")) + (fp_line (start -9 10.5) (end -9 9.6) + (stroke (width 0.2) (type solid)) (layer "F.SilkS")(uuid "6cf50186-6cff-4054-ac04-35cdc465c665")) + (fp_line (start -9 10.5) (end -6.4 10.5) + (stroke (width 0.2) (type solid)) (layer "F.SilkS")(uuid "8d1b0767-bf73-4a04-b6e3-65a0eebc4ef6")) + (fp_line (start 6.4 10.5) (end 9 10.5) + (stroke (width 0.2) (type solid)) (layer "F.SilkS")(uuid "dced984c-c0d0-426d-a7d1-c0807afc815e")) + (fp_line (start 9 -8.3) (end 9 -15) + (stroke (width 0.2) (type solid)) (layer "F.SilkS")(uuid "22567767-03c8-41d7-ae97-5b7b380d06b1")) + (fp_line (start 9 10.5) (end 9 9.6) + (stroke (width 0.2) (type solid)) (layer "F.SilkS")(uuid "4b1b5b15-b78d-4c85-b0c8-bc4be1e8bced")) + (fp_circle (center -10.4648 -7.62) (end -10.4648 -7.87) + (stroke (width 0.75) (type solid)) (fill none) (layer "F.SilkS")(uuid "7099898e-3e99-4ff9-9998-26b15f8b942d")) + (fp_line (start -9.7 -15.2) (end 9.7 -15.2) + (stroke (width 0.05) (type solid)) (layer "Eco2.User")(uuid "14e1cc73-d49a-4c41-80c1-293ddec29a74")) + (fp_line (start -9.7 11.2) (end -9.7 -15.2) + (stroke (width 0.05) (type solid)) (layer "Eco2.User")(uuid "b8869f21-d425-4cea-aece-88023926befe")) + (fp_line (start -9.7 11.2) (end 9.7 11.2) + (stroke (width 0.05) (type solid)) (layer "Eco2.User")(uuid "77db8cac-b176-46fb-8e07-658498a434b2")) + (fp_line (start -0.5 -0.001) (end 0.5 -0.001) + (stroke (width 0.05) (type solid)) (layer "Eco2.User")(uuid "93051670-a8f3-4544-ad70-5770f75aa29c")) + (fp_line (start 0 0.499) (end 0 -0.501) + (stroke (width 0.05) (type solid)) (layer "Eco2.User")(uuid "be4932e2-42e8-4a91-afd5-8b2672e4dc85")) + (fp_line (start 9.7 11.2) (end 9.7 -15.2) + (stroke (width 0.05) (type solid)) (layer "Eco2.User")(uuid "a22230da-646c-4c5b-88ba-3fc4f8e38cd5")) + (fp_line (start -9 -15) (end 9 -15) + (stroke (width 0.1) (type solid)) (layer "B.Fab")(uuid "14b89af9-3886-41e7-81f7-790f1475cc6f")) + (fp_line (start -9 10.5) (end -9 -15) + (stroke (width 0.1) (type solid)) (layer "B.Fab")(uuid "fa541386-c806-4fc4-b7b3-5631071cd1d8")) + (fp_line (start -9 10.5) (end 9 10.5) + (stroke (width 0.1) (type solid)) (layer "B.Fab")(uuid "2d3c548c-d4fd-4999-9b1b-ce3cf77653f8")) + (fp_line (start 9 10.5) (end 9 -15) + (stroke (width 0.1) (type solid)) (layer "B.Fab")(uuid "742495ee-f970-46f8-8d2e-7e837df25243")) + (fp_circle (center -7.9 -7.6) (end -7.9 -8.1) + (stroke (width 0.1) (type solid)) (fill none) (layer "B.Fab")(uuid "5bf18964-d0d0-4b33-85ae-21b8d7a38792")) + (pad "" thru_hole circle (at -2.835 -0.9175) (size 0.6 0.6) (drill 0.3) (layers "*.Cu" "*.Mask")(remove_unused_layers no) + +(uuid "bd6cfc84-eed1-4c29-a962-6927e8cfc9bb") + ) + (pad "" thru_hole circle (at -2.835 0.9175) (size 0.6 0.6) (drill 0.3) (layers "*.Cu" "*.Mask")(remove_unused_layers no) + +(uuid "68a85088-9a9e-47ce-94e2-f381f4a07714") + ) + (pad "" thru_hole circle (at -1.9175 -1.835) (size 0.6 0.6) (drill 0.3) (layers "*.Cu" "*.Mask")(remove_unused_layers no) + +(uuid "1c020f30-66e8-4eda-bdc9-6a92ba465ace") + ) + (pad "" thru_hole circle (at -1.9175 0) (size 0.6 0.6) (drill 0.3) (layers "*.Cu" "*.Mask")(remove_unused_layers no) + +(uuid "c248bc1b-8b27-4749-9508-f940920db95f") + ) + (pad "" thru_hole circle (at -1.9175 1.835) (size 0.6 0.6) (drill 0.3) (layers "*.Cu" "*.Mask")(remove_unused_layers no) + +(uuid "ce126843-0c03-4fff-a8d4-eb5b171f7023") + ) + (pad "" thru_hole circle (at -1 -0.9175) (size 0.6 0.6) (drill 0.3) (layers "*.Cu" "*.Mask")(remove_unused_layers no) + +(uuid "20fa0e63-64ef-4b71-a1fe-3d1b688fc272") + ) + (pad "" thru_hole circle (at -1 0.9175) (size 0.6 0.6) (drill 0.3) (layers "*.Cu" "*.Mask")(remove_unused_layers no) + +(uuid "7c71a6e2-f6c8-4fc5-9972-fdaa6b0ed183") + ) + (pad "" thru_hole circle (at -0.0825 -1.835) (size 0.6 0.6) (drill 0.3) (layers "*.Cu" "*.Mask")(remove_unused_layers no) + +(uuid "bfe8372c-0104-45b2-b353-86c4c2fd8e69") + ) + (pad "" thru_hole circle (at -0.0825 0) (size 0.6 0.6) (drill 0.3) (layers "*.Cu" "*.Mask")(remove_unused_layers no) + +(uuid "90590aa4-d200-4aa3-ae3d-65fca4ddd997") + ) + (pad "" thru_hole circle (at -0.0825 1.835) (size 0.6 0.6) (drill 0.3) (layers "*.Cu" "*.Mask")(remove_unused_layers no) + +(uuid "6a3bca9f-deda-484a-b4aa-9d2307c847a8") + ) + (pad "" thru_hole circle (at 0.835 -0.9175) (size 0.6 0.6) (drill 0.3) (layers "*.Cu" "*.Mask")(remove_unused_layers no) + +(uuid "55800dd8-2ca8-463b-bb99-5c932c761b41") + ) + (pad "" thru_hole circle (at 0.835 0.9175) (size 0.6 0.6) (drill 0.3) (layers "*.Cu" "*.Mask")(remove_unused_layers no) + +(uuid "0ca122ad-16fa-4dca-a9d5-ec9f28de0f66") + ) + (pad "1" smd roundrect (at -8.5 -7.51) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "08b22d3f-0a6e-460e-8007-ec53f2731e61") + ) + (pad "2" smd roundrect (at -8.5 -6.24) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "2272b202-c8dd-4092-8d85-b67de448c62c") + ) + (pad "3" smd roundrect (at -8.5 -4.97) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "5ae9181f-a60a-4a34-af39-fb8d53927279") + ) + (pad "4" smd roundrect (at -8.5 -3.7) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "bbcd7a59-6f51-41e5-8610-5ab3cef829b7") + ) + (pad "5" smd roundrect (at -8.5 -2.43) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "1e913477-4faf-4989-85b4-d7029d70586e") + ) + (pad "6" smd roundrect (at -8.5 -1.16) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "db825d4e-6363-4655-9559-ae00ca64c554") + ) + (pad "7" smd roundrect (at -8.5 0.11) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "60b7d8aa-b138-43ea-bd1e-16adcc8d33ad") + ) + (pad "8" smd roundrect (at -8.5 1.38) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "c9f71d4b-93a6-4852-bb18-cdf4ac8bf641") + ) + (pad "9" smd roundrect (at -8.5 2.65) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "1f949961-9a09-4f81-8c03-269f743d2a7b") + ) + (pad "10" smd roundrect (at -8.5 3.92) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "0d988aeb-fa36-403d-87e2-f6c2ecbb3939") + ) + (pad "11" smd roundrect (at -8.5 5.19 180) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "c318ce7c-9f79-4225-a5e2-fc0ef5969e12") + ) + (pad "12" smd roundrect (at -8.5 6.46 180) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "a631940e-4cf1-46cf-9863-78213fd22aba") + ) + (pad "13" smd roundrect (at -8.5 7.73 180) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "0d5130a2-681c-4940-b4a3-46d65b90f11c") + ) + (pad "14" smd roundrect (at -8.5 9 180) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "cb1a6cde-49c4-41d3-b96f-7a1e356d9bc3") + ) + (pad "15" smd roundrect (at -5.715 10 270) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "91914b0e-bde1-4de2-98c6-eec4a1b28372") + ) + (pad "16" smd roundrect (at -4.445 10 90) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "17985445-f923-44c5-a38b-b003fdc26921") + ) + (pad "17" smd roundrect (at -3.175 10 90) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "571fb42b-535a-43e7-a84b-c505467a4dfe") + ) + (pad "18" smd roundrect (at -1.905 10 90) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "b982433f-58ba-420b-96da-b40877d56837") + ) + (pad "19" smd roundrect (at -0.635 10 90) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "32bfc9c0-6dc4-4f9b-bf0f-1a92d0763c1c") + ) + (pad "20" smd roundrect (at 0.635 10 90) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "a1bc973c-19a1-41d1-a237-88892065b913") + ) + (pad "21" smd roundrect (at 1.905 10 90) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "c847265b-aad7-447d-93ee-dfa65e1c873c") + ) + (pad "22" smd roundrect (at 3.175 10 90) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "349f767a-8008-41ef-934a-dab97b501fa9") + ) + (pad "23" smd roundrect (at 4.445 10 90) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "542fdc21-09f1-4b4a-be4c-6510b2d2d95b") + ) + (pad "24" smd roundrect (at 5.715 10 90) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "b1cbe2fb-fddb-4e17-967c-fb083174aed6") + ) + (pad "25" smd roundrect (at 8.5 9) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "2a9eeacd-6474-4267-beda-833c7149a0bb") + ) + (pad "26" smd roundrect (at 8.5 7.73) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "70aec27e-eb81-4ff3-8561-3b4c5b24e5ec") + ) + (pad "27" smd roundrect (at 8.5 6.46) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "c655475d-1ee7-426c-a402-69ff7a728877") + ) + (pad "28" smd roundrect (at 8.5 5.19) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "4f47f373-52d7-475c-abff-73cd34ae3686") + ) + (pad "29" smd roundrect (at 8.5 3.92) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "c45041a1-4fa4-42b6-bcd5-f963500b6d3e") + ) + (pad "30" smd roundrect (at 8.5 2.65) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.05) + (solder_mask_margin 0.05) +(uuid "adf0b2ed-3ebf-4df1-b9ed-0721e80ee4b5") + ) + (pad "31" smd rect (at 8.5 1.38) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "4e7e1e9a-114b-4106-afa2-dfa31b2f12a4") + ) + (pad "32" smd rect (at 8.5 0.11) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "1b9b4f68-90f4-453e-9b43-a95988ea38f9") + ) + (pad "33" smd rect (at 8.5 -1.16) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "2e91def0-0fb4-4beb-b4e4-065be23f743c") + ) + (pad "34" smd rect (at 8.5 -2.43) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "847cef85-5fb6-4885-8a0a-77ee0bdeea01") + ) + (pad "35" smd rect (at 8.5 -3.7) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "f18d349c-e4d0-4a6d-a1b2-536d039f2144") + ) + (pad "36" smd rect (at 8.5 -4.97) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "d5990d49-986d-4f84-a69e-03162d9ee421") + ) + (pad "37" smd rect (at 8.5 -6.24) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "63c5963a-f366-4128-acc5-663d0ad8c169") + ) + (pad "38" smd rect (at 8.5 -7.51) (size 2 0.9) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "53498215-ca6d-46ab-907e-b5bf5dfc21c6") + ) + (pad "39" smd rect (at -2.835 -1.835) (size 1.33 1.33) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "b65c2d8c-02d8-466a-b9fa-d6195265d9ad") + ) + (pad "39" smd rect (at -2.835 0 90) (size 1.33 1.33) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "c3a96cd8-1aca-4519-a786-e2f992640989") + ) + (pad "39" smd rect (at -2.835 1.835 180) (size 1.33 1.33) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "0bebd4e2-d364-4325-b4e9-d90e23a46083") + ) + (pad "39" smd rect (at -1 -1.835) (size 1.33 1.33) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "a6cc869e-0998-40a6-85c9-cfa613ec10ff") + ) + (pad "39" smd rect (at -1 0) (size 1.33 1.33) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "f20a48ff-a576-4d9e-a36c-e860ec5b7178") + ) + (pad "39" smd rect (at -1 1.835 180) (size 1.33 1.33) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "9cffc53d-9bad-45ea-9503-c6bf1e6620f6") + ) + (pad "39" smd rect (at 0.835 -1.835) (size 1.33 1.33) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "5da7dec2-3ce0-4c32-b248-c57e1cbaeae5") + ) + (pad "39" smd rect (at 0.835 0 270) (size 1.33 1.33) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "7f4f074a-f529-475f-83d1-3b6208ef8c60") + ) + (pad "39" smd rect (at 0.835 1.835 180) (size 1.33 1.33) (layers "F.Cu" "F.Paste" "F.Mask") + (solder_mask_margin 0.05) +(uuid "c91782b9-912e-4085-a63d-548ccf1935b5") + ) + (zone (net 0) (net_name "") (layers "*.Cu")(uuid "ef687268-1ef2-4ddb-ac11-af11f3ba3ff4") + (hatch edge 0.5) + (connect_pads (clearance 0)) + (min_thickness 0.25) (filled_areas_thickness no) + (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed) (copperpour not_allowed) (footprints allowed)) + (fill (thermal_gap 0.5) (thermal_bridge_width 0.5)) + (polygon + (pts + (xy -9 -15) + (xy 9 -15) + (xy 9 -8.7) + (xy -9 -8.7) + ) + ) + ) )