Sync with main branch r6532
This commit is contained in:
commit
06e766b8b2
|
@ -21,6 +21,10 @@ eeschema/template_fieldnames_lexer.h
|
|||
pcbnew/dialogs/dialog_freeroute_exchange_help_html.h
|
||||
pcbnew/pcb_plot_params_keywords.cpp
|
||||
pcbnew/pcb_plot_params_lexer.h
|
||||
pcb_calculator/attenuators/bridget_tee_formula.h
|
||||
pcb_calculator/attenuators/pi_formula.h
|
||||
pcb_calculator/attenuators/splitter_formula.h
|
||||
pcb_calculator/attenuators/tee_formula.h
|
||||
Makefile
|
||||
CMakeCache.txt
|
||||
auto_renamed_to_cpp
|
||||
|
|
|
@ -20,6 +20,13 @@ set_source_files_properties( bitmap2cmp_gui.cpp PROPERTIES
|
|||
COMPILE_DEFINITIONS "COMPILING_DLL"
|
||||
)
|
||||
|
||||
if( MINGW )
|
||||
# BITMAP2COMPONENT_RESOURCES variable is set by the macro.
|
||||
mingw_resource_compiler( bitmap2component )
|
||||
else()
|
||||
set( BITMAP2COMPONENT_RESOURCES bitmap2component.rc )
|
||||
endif()
|
||||
|
||||
if( APPLE )
|
||||
# setup bundle
|
||||
set( BITMAP2COMPONENT_RESOURCES bitmap2component.icns )
|
||||
|
@ -80,11 +87,3 @@ if( false ) # linker map with cross reference
|
|||
LINK_FLAGS "${TO_LINKER},-cref ${TO_LINKER},-Map=bitmap2component.map"
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
if( MINGW )
|
||||
# BITMAP2COMPONENT_RESOURCES variable is set by the macro.
|
||||
mingw_resource_compiler( bitmap2component )
|
||||
else()
|
||||
set( BITMAP2COMPONENT_RESOURCES bitmap2component.rc )
|
||||
endif()
|
||||
|
|
|
@ -57,6 +57,8 @@ set( CVPCB_SRCS
|
|||
if( MINGW )
|
||||
# CVPCB_RESOURCES variable is set by the macro.
|
||||
mingw_resource_compiler( cvpcb )
|
||||
else()
|
||||
set( CVPCB_RESOURCES cvpcb.rc )
|
||||
endif()
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
(fp_lib_table
|
||||
(lib (name LEDs)(type KiCad)(uri "$(KISYSMOD)\\LEDs.pretty")(options "")(descr ""))
|
||||
)
|
|
@ -355,20 +355,22 @@ ENDDEF
|
|||
# C
|
||||
#
|
||||
DEF C C 0 10 N Y 1 F N
|
||||
F0 "C" 0 100 40 H V L CNN
|
||||
F1 "C" 6 -85 40 H V L CNN
|
||||
F0 "C" 25 100 50 H V L CNN
|
||||
F1 "C" 25 -100 50 H V L CNN
|
||||
F2 "" 38 -150 30 H V C CNN
|
||||
F3 "" 0 100 30 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
SM*
|
||||
C?
|
||||
C1-1
|
||||
C_????_*
|
||||
C_????
|
||||
SMD*_c
|
||||
Capacitor*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 20 -80 -30 80 -30 N
|
||||
P 2 0 1 20 -80 30 80 30 N
|
||||
X ~ 1 0 200 170 D 40 40 1 1 P
|
||||
X ~ 2 0 -200 170 U 40 40 1 1 P
|
||||
X ~ 1 0 150 110 D 40 40 1 1 P
|
||||
X ~ 2 0 -150 110 U 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
|
@ -402,21 +404,29 @@ ENDDEF
|
|||
#
|
||||
# CP
|
||||
#
|
||||
DEF CP C 0 10 N N 1 F N
|
||||
F0 "C" 50 100 40 H V L CNN
|
||||
F1 "CP" 50 -100 40 H V L CNN
|
||||
F2 "" 100 -150 30 H V C CNN
|
||||
F3 "" 50 100 30 H V C CNN
|
||||
ALIAS CAPAPOL
|
||||
DEF CP C 0 10 N Y 1 F N
|
||||
F0 "C" 25 100 50 H V L CNN
|
||||
F1 "CP" 25 -100 50 H V L CNN
|
||||
F2 "" 38 -150 30 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
CP*
|
||||
SM*
|
||||
Elko*
|
||||
TantalC*
|
||||
C*elec
|
||||
c_elec*
|
||||
SMD*_Pol
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 4 0 1 8 -80 50 -80 -50 80 -50 80 50 N
|
||||
P 4 0 1 0 -50 50 -50 -20 50 -20 50 50 F
|
||||
X ~ 1 0 200 150 D 40 40 1 1 P
|
||||
X ~ 2 0 -200 150 U 40 40 1 1 P
|
||||
S -90 20 -90 40 0 1 0 N
|
||||
S -90 20 90 20 0 1 0 N
|
||||
S -70 90 -30 90 0 1 0 N
|
||||
S -50 70 -50 110 0 1 0 N
|
||||
S 90 -20 -90 -40 0 1 0 F
|
||||
S 90 40 -90 40 0 1 0 N
|
||||
S 90 40 90 20 0 1 0 N
|
||||
X ~ 1 0 150 110 D 40 40 1 1 P
|
||||
X ~ 2 0 -150 110 U 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
|
@ -599,12 +609,12 @@ $FPLIST
|
|||
LEDV
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 0 50 50 50 -50 N
|
||||
P 3 0 1 0 -50 50 50 0 -50 -50 F
|
||||
P 3 0 1 0 65 -40 110 -80 105 -55 N
|
||||
P 3 0 1 0 80 -25 125 -65 120 -40 N
|
||||
X A 1 -200 0 150 R 40 40 1 1 P
|
||||
X K 2 200 0 150 L 40 40 1 1 P
|
||||
P 2 0 1 0 -50 50 -50 -50 N
|
||||
P 3 0 1 0 -80 -25 -125 -65 -120 -40 N
|
||||
P 3 0 1 0 -65 -40 -110 -80 -105 -55 N
|
||||
P 3 0 1 0 50 50 -50 0 50 -50 F
|
||||
X K 1 -200 0 150 R 40 40 1 1 P
|
||||
X A 2 200 0 150 L 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
|
@ -624,29 +634,26 @@ ENDDEF
|
|||
# R
|
||||
#
|
||||
DEF R R 0 0 N Y 1 F N
|
||||
F0 "R" 80 0 40 V V C CNN
|
||||
F1 "R" 7 1 40 V V C CNN
|
||||
F0 "R" 80 0 50 V V C CNN
|
||||
F1 "R" 0 0 50 V V C CNN
|
||||
F2 "" -70 0 30 V V C CNN
|
||||
F3 "" 0 0 30 H V C CNN
|
||||
$FPLIST
|
||||
R?
|
||||
SM0603
|
||||
SM0805
|
||||
R?-*
|
||||
SM1206
|
||||
R_*
|
||||
Resistor_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -40 150 40 -150 0 1 12 N
|
||||
X ~ 1 0 250 100 D 60 60 1 1 P
|
||||
X ~ 2 0 -250 100 U 60 60 1 1 P
|
||||
S -40 -100 40 100 0 1 10 N
|
||||
X ~ 1 0 150 50 D 60 60 1 1 P
|
||||
X ~ 2 0 -150 50 U 60 60 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# RR9
|
||||
#
|
||||
DEF RR9 RR 0 40 Y N 1 F N
|
||||
F0 "RR" 50 600 70 H V C CNN
|
||||
F1 "RR9" 30 0 70 V V C CNN
|
||||
F0 "RR" 50 600 50 H V C CNN
|
||||
F1 "RR9" 30 0 50 V V C CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
(kicad_pcb (version 4) (host pcbnew "(2015-10-31 BZR 6288)-product")
|
||||
(kicad_pcb (version 4) (host pcbnew "(2016-01-28 BZR 6518)-product")
|
||||
|
||||
(general
|
||||
(links 200)
|
||||
(no_connects 0)
|
||||
(area 15.992729 24.89454 202.259001 195.5652)
|
||||
(area 69.241669 24.89454 202.259001 142.646401)
|
||||
(thickness 1.6002)
|
||||
(drawings 19)
|
||||
(tracks 782)
|
||||
(zones 0)
|
||||
(modules 25)
|
||||
(nets 111)
|
||||
(nets 174)
|
||||
)
|
||||
|
||||
(page A4)
|
||||
|
@ -65,11 +65,13 @@
|
|||
(pad_size 1.397 1.397)
|
||||
(pad_drill 0.89916)
|
||||
(pad_to_mask_clearance 0.254)
|
||||
(solder_mask_min_width 0.5)
|
||||
(aux_axis_origin 74.93 140.97)
|
||||
(visible_elements 7FFFFF7F)
|
||||
(pcbplotparams
|
||||
(layerselection 0x00030_80000001)
|
||||
(layerselection 0x000f0_ffffffff)
|
||||
(usegerberextensions false)
|
||||
(usegerberattributes true)
|
||||
(excludeedgelayer false)
|
||||
(linewidth 0.150000)
|
||||
(plotframeref false)
|
||||
|
@ -89,7 +91,7 @@
|
|||
(subtractmaskfromsilk false)
|
||||
(outputformat 1)
|
||||
(mirror false)
|
||||
(drillshape 1)
|
||||
(drillshape 0)
|
||||
(scaleselection 1)
|
||||
(outputdirectory plot_files/))
|
||||
)
|
||||
|
@ -198,13 +200,76 @@
|
|||
(net 101 VCC)
|
||||
(net 102 "Net-(C2-Pad1)")
|
||||
(net 103 "Net-(C3-Pad1)")
|
||||
(net 104 "Net-(D1-Pad1)")
|
||||
(net 105 "Net-(D2-Pad1)")
|
||||
(net 106 "Net-(R3-Pad1)")
|
||||
(net 107 "Net-(U3-Pad15)")
|
||||
(net 108 "Net-(U3-Pad16)")
|
||||
(net 109 "Net-(U3-Pad17)")
|
||||
(net 110 "Net-(U3-Pad18)")
|
||||
(net 104 "Net-(R3-Pad1)")
|
||||
(net 105 "Net-(U3-Pad15)")
|
||||
(net 106 "Net-(U3-Pad16)")
|
||||
(net 107 "Net-(U3-Pad17)")
|
||||
(net 108 "Net-(U3-Pad18)")
|
||||
(net 109 "Net-(BUS1-Pad4)")
|
||||
(net 110 "Net-(BUS1-Pad5)")
|
||||
(net 111 "Net-(BUS1-Pad6)")
|
||||
(net 112 "Net-(BUS1-Pad7)")
|
||||
(net 113 "Net-(BUS1-Pad8)")
|
||||
(net 114 "Net-(BUS1-Pad9)")
|
||||
(net 115 "Net-(BUS1-Pad10)")
|
||||
(net 116 "Net-(BUS1-Pad11)")
|
||||
(net 117 "Net-(BUS1-Pad12)")
|
||||
(net 118 "Net-(BUS1-Pad15)")
|
||||
(net 119 "Net-(BUS1-Pad16)")
|
||||
(net 120 "Net-(BUS1-Pad17)")
|
||||
(net 121 "Net-(BUS1-Pad18)")
|
||||
(net 122 "Net-(BUS1-Pad19)")
|
||||
(net 123 "Net-(BUS1-Pad20)")
|
||||
(net 124 "Net-(BUS1-Pad21)")
|
||||
(net 125 "Net-(BUS1-Pad22)")
|
||||
(net 126 "Net-(BUS1-Pad23)")
|
||||
(net 127 "Net-(BUS1-Pad24)")
|
||||
(net 128 "Net-(BUS1-Pad25)")
|
||||
(net 129 "Net-(BUS1-Pad26)")
|
||||
(net 130 "Net-(BUS1-Pad27)")
|
||||
(net 131 "Net-(BUS1-Pad28)")
|
||||
(net 132 "Net-(BUS1-Pad30)")
|
||||
(net 133 "Net-(BUS1-Pad32)")
|
||||
(net 134 "Net-(BUS1-Pad41)")
|
||||
(net 135 "Net-(BUS1-Pad43)")
|
||||
(net 136 "Net-(BUS1-Pad44)")
|
||||
(net 137 "Net-(BUS1-Pad45)")
|
||||
(net 138 "Net-(BUS1-Pad46)")
|
||||
(net 139 "Net-(BUS1-Pad47)")
|
||||
(net 140 "Net-(BUS1-Pad48)")
|
||||
(net 141 "Net-(BUS1-Pad49)")
|
||||
(net 142 "Net-(BUS1-Pad50)")
|
||||
(net 143 "Net-(D1-Pad2)")
|
||||
(net 144 "Net-(D2-Pad2)")
|
||||
(net 145 "Net-(RR1-Pad10)")
|
||||
(net 146 "Net-(U3-Pad11)")
|
||||
(net 147 "Net-(U8-Pad8)")
|
||||
(net 148 "Net-(U8-Pad9)")
|
||||
(net 149 "Net-(U8-Pad10)")
|
||||
(net 150 "Net-(U9-PadN1)")
|
||||
(net 151 "Net-(U9-PadN3)")
|
||||
(net 152 "Net-(U9-PadM1)")
|
||||
(net 153 "Net-(U9-PadM2)")
|
||||
(net 154 "Net-(U9-PadJ3)")
|
||||
(net 155 "Net-(U9-PadE2)")
|
||||
(net 156 "Net-(U9-PadE3)")
|
||||
(net 157 "Net-(U9-PadC5)")
|
||||
(net 158 "Net-(U9-PadB1)")
|
||||
(net 159 "Net-(U9-PadB4)")
|
||||
(net 160 "Net-(U9-PadB5)")
|
||||
(net 161 "Net-(U9-PadB10)")
|
||||
(net 162 "Net-(U9-PadB13)")
|
||||
(net 163 "Net-(U9-PadA1)")
|
||||
(net 164 "Net-(U9-PadA2)")
|
||||
(net 165 "Net-(U9-PadA3)")
|
||||
(net 166 "Net-(U9-PadN5)")
|
||||
(net 167 "Net-(U9-PadN12)")
|
||||
(net 168 "Net-(U9-PadL5)")
|
||||
(net 169 "Net-(U9-PadL6)")
|
||||
(net 170 "Net-(U9-PadL9)")
|
||||
(net 171 "Net-(U9-PadK12)")
|
||||
(net 172 "Net-(U9-PadJ11)")
|
||||
(net 173 "Net-(U9-PadE11)")
|
||||
|
||||
(net_class Default ""
|
||||
(clearance 0.254)
|
||||
|
@ -312,15 +377,78 @@
|
|||
(add_net /STROBE)
|
||||
(add_net /WR-)
|
||||
(add_net /WR_REG)
|
||||
(add_net "Net-(BUS1-Pad10)")
|
||||
(add_net "Net-(BUS1-Pad11)")
|
||||
(add_net "Net-(BUS1-Pad12)")
|
||||
(add_net "Net-(BUS1-Pad15)")
|
||||
(add_net "Net-(BUS1-Pad16)")
|
||||
(add_net "Net-(BUS1-Pad17)")
|
||||
(add_net "Net-(BUS1-Pad18)")
|
||||
(add_net "Net-(BUS1-Pad19)")
|
||||
(add_net "Net-(BUS1-Pad20)")
|
||||
(add_net "Net-(BUS1-Pad21)")
|
||||
(add_net "Net-(BUS1-Pad22)")
|
||||
(add_net "Net-(BUS1-Pad23)")
|
||||
(add_net "Net-(BUS1-Pad24)")
|
||||
(add_net "Net-(BUS1-Pad25)")
|
||||
(add_net "Net-(BUS1-Pad26)")
|
||||
(add_net "Net-(BUS1-Pad27)")
|
||||
(add_net "Net-(BUS1-Pad28)")
|
||||
(add_net "Net-(BUS1-Pad30)")
|
||||
(add_net "Net-(BUS1-Pad32)")
|
||||
(add_net "Net-(BUS1-Pad4)")
|
||||
(add_net "Net-(BUS1-Pad41)")
|
||||
(add_net "Net-(BUS1-Pad43)")
|
||||
(add_net "Net-(BUS1-Pad44)")
|
||||
(add_net "Net-(BUS1-Pad45)")
|
||||
(add_net "Net-(BUS1-Pad46)")
|
||||
(add_net "Net-(BUS1-Pad47)")
|
||||
(add_net "Net-(BUS1-Pad48)")
|
||||
(add_net "Net-(BUS1-Pad49)")
|
||||
(add_net "Net-(BUS1-Pad5)")
|
||||
(add_net "Net-(BUS1-Pad50)")
|
||||
(add_net "Net-(BUS1-Pad6)")
|
||||
(add_net "Net-(BUS1-Pad7)")
|
||||
(add_net "Net-(BUS1-Pad8)")
|
||||
(add_net "Net-(BUS1-Pad9)")
|
||||
(add_net "Net-(C2-Pad1)")
|
||||
(add_net "Net-(C3-Pad1)")
|
||||
(add_net "Net-(D1-Pad1)")
|
||||
(add_net "Net-(D2-Pad1)")
|
||||
(add_net "Net-(D1-Pad2)")
|
||||
(add_net "Net-(D2-Pad2)")
|
||||
(add_net "Net-(R3-Pad1)")
|
||||
(add_net "Net-(RR1-Pad10)")
|
||||
(add_net "Net-(U3-Pad11)")
|
||||
(add_net "Net-(U3-Pad15)")
|
||||
(add_net "Net-(U3-Pad16)")
|
||||
(add_net "Net-(U3-Pad17)")
|
||||
(add_net "Net-(U3-Pad18)")
|
||||
(add_net "Net-(U8-Pad10)")
|
||||
(add_net "Net-(U8-Pad8)")
|
||||
(add_net "Net-(U8-Pad9)")
|
||||
(add_net "Net-(U9-PadA1)")
|
||||
(add_net "Net-(U9-PadA2)")
|
||||
(add_net "Net-(U9-PadA3)")
|
||||
(add_net "Net-(U9-PadB1)")
|
||||
(add_net "Net-(U9-PadB10)")
|
||||
(add_net "Net-(U9-PadB13)")
|
||||
(add_net "Net-(U9-PadB4)")
|
||||
(add_net "Net-(U9-PadB5)")
|
||||
(add_net "Net-(U9-PadC5)")
|
||||
(add_net "Net-(U9-PadE11)")
|
||||
(add_net "Net-(U9-PadE2)")
|
||||
(add_net "Net-(U9-PadE3)")
|
||||
(add_net "Net-(U9-PadJ11)")
|
||||
(add_net "Net-(U9-PadJ3)")
|
||||
(add_net "Net-(U9-PadK12)")
|
||||
(add_net "Net-(U9-PadL5)")
|
||||
(add_net "Net-(U9-PadL6)")
|
||||
(add_net "Net-(U9-PadL9)")
|
||||
(add_net "Net-(U9-PadM1)")
|
||||
(add_net "Net-(U9-PadM2)")
|
||||
(add_net "Net-(U9-PadN1)")
|
||||
(add_net "Net-(U9-PadN12)")
|
||||
(add_net "Net-(U9-PadN3)")
|
||||
(add_net "Net-(U9-PadN5)")
|
||||
)
|
||||
|
||||
(net_class Power ""
|
||||
|
@ -334,7 +462,7 @@
|
|||
(add_net VCC)
|
||||
)
|
||||
|
||||
(module LOGO (layer Composant) (tedit 0) (tstamp 56372FFF)
|
||||
(module LOGO locked (layer Composant) (tedit 0) (tstamp 56372FFF)
|
||||
(at 89.027 98.552)
|
||||
(fp_text reference G*** (at 0 0) (layer F.SilkS) hide
|
||||
(effects (font (thickness 0.3)))
|
||||
|
@ -567,39 +695,64 @@
|
|||
(net 81 /PC-RST))
|
||||
(pad 3 connect rect (at 33.02 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 101 VCC))
|
||||
(pad 4 connect rect (at 30.48 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 5 connect rect (at 27.94 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 6 connect rect (at 25.4 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 7 connect rect (at 22.86 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 8 connect rect (at 20.32 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 9 connect rect (at 17.78 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 10 connect rect (at 15.24 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 11 connect rect (at 12.7 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 12 connect rect (at 10.16 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 4 connect rect (at 30.48 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 109 "Net-(BUS1-Pad4)"))
|
||||
(pad 5 connect rect (at 27.94 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 110 "Net-(BUS1-Pad5)"))
|
||||
(pad 6 connect rect (at 25.4 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 111 "Net-(BUS1-Pad6)"))
|
||||
(pad 7 connect rect (at 22.86 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 112 "Net-(BUS1-Pad7)"))
|
||||
(pad 8 connect rect (at 20.32 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 113 "Net-(BUS1-Pad8)"))
|
||||
(pad 9 connect rect (at 17.78 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 114 "Net-(BUS1-Pad9)"))
|
||||
(pad 10 connect rect (at 15.24 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 115 "Net-(BUS1-Pad10)"))
|
||||
(pad 11 connect rect (at 12.7 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 116 "Net-(BUS1-Pad11)"))
|
||||
(pad 12 connect rect (at 10.16 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 117 "Net-(BUS1-Pad12)"))
|
||||
(pad 13 connect rect (at 7.62 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 79 /PC-IOW))
|
||||
(pad 14 connect rect (at 5.08 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 78 /PC-IOR))
|
||||
(pad 15 connect rect (at 2.54 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 16 connect rect (at 0 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 17 connect rect (at -2.54 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 18 connect rect (at -5.08 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 19 connect rect (at -7.62 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 20 connect rect (at -10.16 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 21 connect rect (at -12.7 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 22 connect rect (at -15.24 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 23 connect rect (at -17.78 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 24 connect rect (at -20.32 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 25 connect rect (at -22.86 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 26 connect rect (at -25.4 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 27 connect rect (at -27.94 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 28 connect rect (at -30.48 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 15 connect rect (at 2.54 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 118 "Net-(BUS1-Pad15)"))
|
||||
(pad 16 connect rect (at 0 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 119 "Net-(BUS1-Pad16)"))
|
||||
(pad 17 connect rect (at -2.54 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 120 "Net-(BUS1-Pad17)"))
|
||||
(pad 18 connect rect (at -5.08 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 121 "Net-(BUS1-Pad18)"))
|
||||
(pad 19 connect rect (at -7.62 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 122 "Net-(BUS1-Pad19)"))
|
||||
(pad 20 connect rect (at -10.16 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 123 "Net-(BUS1-Pad20)"))
|
||||
(pad 21 connect rect (at -12.7 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 124 "Net-(BUS1-Pad21)"))
|
||||
(pad 22 connect rect (at -15.24 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 125 "Net-(BUS1-Pad22)"))
|
||||
(pad 23 connect rect (at -17.78 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 126 "Net-(BUS1-Pad23)"))
|
||||
(pad 24 connect rect (at -20.32 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 127 "Net-(BUS1-Pad24)"))
|
||||
(pad 25 connect rect (at -22.86 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 128 "Net-(BUS1-Pad25)"))
|
||||
(pad 26 connect rect (at -25.4 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 129 "Net-(BUS1-Pad26)"))
|
||||
(pad 27 connect rect (at -27.94 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 130 "Net-(BUS1-Pad27)"))
|
||||
(pad 28 connect rect (at -30.48 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 131 "Net-(BUS1-Pad28)"))
|
||||
(pad 29 connect rect (at -33.02 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 101 VCC))
|
||||
(pad 30 connect rect (at -35.56 0) (size 1.778 7.62) (layers Cuivre B.Mask))
|
||||
(pad 30 connect rect (at -35.56 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 132 "Net-(BUS1-Pad30)"))
|
||||
(pad 31 connect rect (at -38.1 0) (size 1.778 7.62) (layers Cuivre B.Mask)
|
||||
(net 100 GND))
|
||||
(pad 32 connect rect (at 38.1 0) (size 1.778 7.62) (layers Composant F.Mask))
|
||||
(pad 32 connect rect (at 38.1 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 133 "Net-(BUS1-Pad32)"))
|
||||
(pad 33 connect rect (at 35.56 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 77 /PC-DB7))
|
||||
(pad 34 connect rect (at 33.02 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
|
@ -616,17 +769,26 @@
|
|||
(net 71 /PC-DB1))
|
||||
(pad 40 connect rect (at 17.78 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 70 /PC-DB0))
|
||||
(pad 41 connect rect (at 15.24 0) (size 1.778 7.62) (layers Composant F.Mask))
|
||||
(pad 41 connect rect (at 15.24 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 134 "Net-(BUS1-Pad41)"))
|
||||
(pad 42 connect rect (at 12.7 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 69 /PC-AEN))
|
||||
(pad 43 connect rect (at 10.16 0) (size 1.778 7.62) (layers Composant F.Mask))
|
||||
(pad 44 connect rect (at 7.62 0) (size 1.778 7.62) (layers Composant F.Mask))
|
||||
(pad 45 connect rect (at 5.08 0) (size 1.778 7.62) (layers Composant F.Mask))
|
||||
(pad 46 connect rect (at 2.54 0) (size 1.778 7.62) (layers Composant F.Mask))
|
||||
(pad 47 connect rect (at 0 0) (size 1.778 7.62) (layers Composant F.Mask))
|
||||
(pad 48 connect rect (at -2.54 0) (size 1.778 7.62) (layers Composant F.Mask))
|
||||
(pad 49 connect rect (at -5.08 0) (size 1.778 7.62) (layers Composant F.Mask))
|
||||
(pad 50 connect rect (at -7.62 0) (size 1.778 7.62) (layers Composant F.Mask))
|
||||
(pad 43 connect rect (at 10.16 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 135 "Net-(BUS1-Pad43)"))
|
||||
(pad 44 connect rect (at 7.62 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 136 "Net-(BUS1-Pad44)"))
|
||||
(pad 45 connect rect (at 5.08 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 137 "Net-(BUS1-Pad45)"))
|
||||
(pad 46 connect rect (at 2.54 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 138 "Net-(BUS1-Pad46)"))
|
||||
(pad 47 connect rect (at 0 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 139 "Net-(BUS1-Pad47)"))
|
||||
(pad 48 connect rect (at -2.54 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 140 "Net-(BUS1-Pad48)"))
|
||||
(pad 49 connect rect (at -5.08 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 141 "Net-(BUS1-Pad49)"))
|
||||
(pad 50 connect rect (at -7.62 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 142 "Net-(BUS1-Pad50)"))
|
||||
(pad 51 connect rect (at -10.16 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
(net 60 /PC-A11))
|
||||
(pad 52 connect rect (at -12.7 0) (size 1.778 7.62) (layers Composant F.Mask)
|
||||
|
@ -729,7 +891,7 @@
|
|||
(pad 29 thru_hole circle (at -11.43 -7.62) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 98 /WR-))
|
||||
(pad 30 thru_hole circle (at -13.97 -7.62) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 106 "Net-(R3-Pad1)"))
|
||||
(net 104 "Net-(R3-Pad1)"))
|
||||
(pad 31 thru_hole circle (at -16.51 -7.62) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 37 /MA15))
|
||||
(pad 32 thru_hole circle (at -19.05 -7.62) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -847,12 +1009,16 @@
|
|||
(fp_line (start 16.51 -16.51) (end -16.51 -16.51) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -16.51 -16.51) (end -16.51 16.51) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -16.51 16.51) (end 15.24 16.51) (layer F.SilkS) (width 0.15))
|
||||
(pad N1 thru_hole circle (at 15.24 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad N1 thru_hole circle (at 15.24 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 150 "Net-(U9-PadN1)"))
|
||||
(pad N2 thru_hole circle (at 12.7 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 15 /D0))
|
||||
(pad N3 thru_hole circle (at 10.16 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad M1 thru_hole circle (at 15.24 -12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad M2 thru_hole circle (at 12.7 -12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad N3 thru_hole circle (at 10.16 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 151 "Net-(U9-PadN3)"))
|
||||
(pad M1 thru_hole circle (at 15.24 -12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 152 "Net-(U9-PadM1)"))
|
||||
(pad M2 thru_hole circle (at 12.7 -12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 153 "Net-(U9-PadM2)"))
|
||||
(pad M3 thru_hole circle (at 10.16 -12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 28 /LED1))
|
||||
(pad L1 thru_hole circle (at 15.24 -10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -871,7 +1037,8 @@
|
|||
(net 65 /PC-A6))
|
||||
(pad J2 thru_hole circle (at 12.7 -5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 64 /PC-A5))
|
||||
(pad J3 thru_hole circle (at 10.16 -5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad J3 thru_hole circle (at 10.16 -5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 154 "Net-(U9-PadJ3)"))
|
||||
(pad H1 thru_hole circle (at 15.24 -2.54 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 67 /PC-A8))
|
||||
(pad H2 thru_hole circle (at 12.7 -2.54 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -891,8 +1058,10 @@
|
|||
(net 34 /MA12))
|
||||
(pad E1 thru_hole circle (at 15.24 5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 41 /MA4))
|
||||
(pad E2 thru_hole circle (at 12.7 5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad E3 thru_hole circle (at 10.16 5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad E2 thru_hole circle (at 12.7 5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 155 "Net-(U9-PadE2)"))
|
||||
(pad E3 thru_hole circle (at 10.16 5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 156 "Net-(U9-PadE3)"))
|
||||
(pad D1 thru_hole circle (at 15.24 7.62 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 36 /MA14))
|
||||
(pad D2 thru_hole circle (at 12.7 7.62 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -907,7 +1076,8 @@
|
|||
(net 101 VCC))
|
||||
(pad C4 thru_hole circle (at 7.62 10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 100 GND))
|
||||
(pad C5 thru_hole circle (at 5.08 10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad C5 thru_hole circle (at 5.08 10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 157 "Net-(U9-PadC5)"))
|
||||
(pad C6 thru_hole circle (at 2.54 10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 48 /MD0))
|
||||
(pad C7 thru_hole circle (at 0 10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
|
@ -923,13 +1093,16 @@
|
|||
(net 3 /AUTOFD-))
|
||||
(pad C13 thru_hole circle (at -15.24 10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 42 /MA5))
|
||||
(pad B1 thru_hole circle (at 15.24 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad B1 thru_hole circle (at 15.24 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 158 "Net-(U9-PadB1)"))
|
||||
(pad B2 thru_hole circle (at 12.7 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 31 /MA1))
|
||||
(pad B3 thru_hole circle (at 10.16 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 44 /MA7))
|
||||
(pad B4 thru_hole circle (at 7.62 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad B5 thru_hole circle (at 5.08 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad B4 thru_hole circle (at 7.62 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 159 "Net-(U9-PadB4)"))
|
||||
(pad B5 thru_hole circle (at 5.08 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 160 "Net-(U9-PadB5)"))
|
||||
(pad B6 thru_hole circle (at 2.54 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 50 /MD2))
|
||||
(pad B7 thru_hole circle (at 0 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -938,15 +1111,20 @@
|
|||
(net 55 /MD7))
|
||||
(pad B9 thru_hole circle (at -5.08 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 56 /OE-))
|
||||
(pad B10 thru_hole circle (at -7.62 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad B10 thru_hole circle (at -7.62 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 161 "Net-(U9-PadB10)"))
|
||||
(pad B11 thru_hole circle (at -10.16 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 101 VCC))
|
||||
(pad B12 thru_hole circle (at -12.7 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 101 VCC))
|
||||
(pad B13 thru_hole circle (at -15.24 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad A1 thru_hole rect (at 15.24 15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad A2 thru_hole circle (at 12.7 15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad A3 thru_hole circle (at 10.16 15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad B13 thru_hole circle (at -15.24 12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 162 "Net-(U9-PadB13)"))
|
||||
(pad A1 thru_hole rect (at 15.24 15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 163 "Net-(U9-PadA1)"))
|
||||
(pad A2 thru_hole circle (at 12.7 15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 164 "Net-(U9-PadA2)"))
|
||||
(pad A3 thru_hole circle (at 10.16 15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 165 "Net-(U9-PadA3)"))
|
||||
(pad A4 thru_hole circle (at 7.62 15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 46 /MA9))
|
||||
(pad A5 thru_hole circle (at 5.08 15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -969,7 +1147,8 @@
|
|||
(net 98 /WR-))
|
||||
(pad N4 thru_hole circle (at 7.62 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 58 /PC-A1))
|
||||
(pad N5 thru_hole circle (at 5.08 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad N5 thru_hole circle (at 5.08 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 166 "Net-(U9-PadN5)"))
|
||||
(pad N6 thru_hole circle (at 2.54 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 82 /PC-WR))
|
||||
(pad N7 thru_hole circle (at 0 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -982,7 +1161,8 @@
|
|||
(net 69 /PC-AEN))
|
||||
(pad N11 thru_hole circle (at -10.16 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 20 /D5))
|
||||
(pad N12 thru_hole circle (at -12.7 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad N12 thru_hole circle (at -12.7 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 167 "Net-(U9-PadN12)"))
|
||||
(pad N13 thru_hole circle (at -15.24 -15.24 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 95 /SLCT+))
|
||||
(pad M4 thru_hole circle (at 7.62 -12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -1006,13 +1186,16 @@
|
|||
(pad M13 thru_hole circle (at -15.24 -12.7 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad L4 thru_hole circle (at 7.62 -10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 13 /CLKLCA))
|
||||
(pad L5 thru_hole circle (at 5.08 -10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad L6 thru_hole circle (at 2.54 -10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad L5 thru_hole circle (at 5.08 -10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 168 "Net-(U9-PadL5)"))
|
||||
(pad L6 thru_hole circle (at 2.54 -10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 169 "Net-(U9-PadL6)"))
|
||||
(pad L7 thru_hole circle (at 0 -10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 100 GND))
|
||||
(pad L8 thru_hole circle (at -2.54 -10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 59 /PC-A10))
|
||||
(pad L9 thru_hole circle (at -5.08 -10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad L9 thru_hole circle (at -5.08 -10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 170 "Net-(U9-PadL9)"))
|
||||
(pad L10 thru_hole circle (at -7.62 -10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 101 VCC))
|
||||
(pad L11 thru_hole circle (at -10.16 -10.16 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -1023,10 +1206,12 @@
|
|||
(net 83 /PE+))
|
||||
(pad K11 thru_hole circle (at -10.16 -7.62 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 100 GND))
|
||||
(pad K12 thru_hole circle (at -12.7 -7.62 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad K12 thru_hole circle (at -12.7 -7.62 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 171 "Net-(U9-PadK12)"))
|
||||
(pad K13 thru_hole circle (at -15.24 -7.62 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 2 /ACK))
|
||||
(pad J11 thru_hole circle (at -10.16 -5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad J11 thru_hole circle (at -10.16 -5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 172 "Net-(U9-PadJ11)"))
|
||||
(pad J12 thru_hole circle (at -12.7 -5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 12 /BUST+))
|
||||
(pad J13 thru_hole circle (at -15.24 -5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -1049,7 +1234,8 @@
|
|||
(net 6 /BIT2))
|
||||
(pad F13 thru_hole circle (at -15.24 2.54 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 29 /LED2))
|
||||
(pad E11 thru_hole circle (at -10.16 5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad E11 thru_hole circle (at -10.16 5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 173 "Net-(U9-PadE11)"))
|
||||
(pad E12 thru_hole circle (at -12.7 5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 27 /INIT-))
|
||||
(pad E13 thru_hole circle (at -15.24 5.08 180) (size 1.397 1.397) (drill 0.7874) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -1091,18 +1277,21 @@
|
|||
(pad 2 thru_hole circle (at -11.43 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 47 /MATCHL))
|
||||
(pad 3 thru_hole circle (at -8.89 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 110 "Net-(U3-Pad18)"))
|
||||
(net 108 "Net-(U3-Pad18)"))
|
||||
(pad 4 thru_hole circle (at -6.35 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 109 "Net-(U3-Pad17)"))
|
||||
(net 107 "Net-(U3-Pad17)"))
|
||||
(pad 5 thru_hole circle (at -3.81 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 108 "Net-(U3-Pad16)"))
|
||||
(net 106 "Net-(U3-Pad16)"))
|
||||
(pad 6 thru_hole circle (at -1.27 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 107 "Net-(U3-Pad15)"))
|
||||
(net 105 "Net-(U3-Pad15)"))
|
||||
(pad 7 thru_hole circle (at 1.27 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 82 /PC-WR))
|
||||
(pad 8 thru_hole circle (at 3.81 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad 9 thru_hole circle (at 6.35 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad 10 thru_hole circle (at 8.89 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad 8 thru_hole circle (at 3.81 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 147 "Net-(U8-Pad8)"))
|
||||
(pad 9 thru_hole circle (at 6.35 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 148 "Net-(U8-Pad9)"))
|
||||
(pad 10 thru_hole circle (at 8.89 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 149 "Net-(U8-Pad10)"))
|
||||
(pad 11 thru_hole circle (at 11.43 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 93 /RSTL))
|
||||
(pad 12 thru_hole circle (at 13.97 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -1176,7 +1365,8 @@
|
|||
(net 81 /PC-RST))
|
||||
(pad 10 thru_hole circle (at 11.43 3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 100 GND))
|
||||
(pad 11 thru_hole circle (at 11.43 -3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad 11 thru_hole circle (at 11.43 -3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 146 "Net-(U3-Pad11)"))
|
||||
(pad 12 thru_hole circle (at 8.89 -3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 93 /RSTL))
|
||||
(pad 13 thru_hole circle (at 6.35 -3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -1184,13 +1374,13 @@
|
|||
(pad 14 thru_hole circle (at 3.81 -3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 82 /PC-WR))
|
||||
(pad 15 thru_hole circle (at 1.27 -3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 107 "Net-(U3-Pad15)"))
|
||||
(net 105 "Net-(U3-Pad15)"))
|
||||
(pad 16 thru_hole circle (at -1.27 -3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 108 "Net-(U3-Pad16)"))
|
||||
(net 106 "Net-(U3-Pad16)"))
|
||||
(pad 17 thru_hole circle (at -3.81 -3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 109 "Net-(U3-Pad17)"))
|
||||
(net 107 "Net-(U3-Pad17)"))
|
||||
(pad 18 thru_hole circle (at -6.35 -3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 110 "Net-(U3-Pad18)"))
|
||||
(net 108 "Net-(U3-Pad18)"))
|
||||
(pad 19 thru_hole circle (at -8.89 -3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 100 GND))
|
||||
(pad 20 thru_hole circle (at -11.43 -3.81) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
|
@ -1480,7 +1670,7 @@
|
|||
(fp_line (start 3.302 1.016) (end 3.302 0) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -3.302 -0.508) (end -2.794 -1.016) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 thru_hole circle (at -3.81 0) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 105 "Net-(D2-Pad1)"))
|
||||
(net 144 "Net-(D2-Pad2)"))
|
||||
(pad 2 thru_hole circle (at 3.81 0) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 29 /LED2))
|
||||
(model Discret.3dshapes/R3.wrl
|
||||
|
@ -1510,7 +1700,7 @@
|
|||
(fp_line (start 3.302 1.016) (end 3.302 0) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -3.302 -0.508) (end -2.794 -1.016) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 thru_hole circle (at -3.81 0 180) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 104 "Net-(D1-Pad1)"))
|
||||
(net 143 "Net-(D1-Pad2)"))
|
||||
(pad 2 thru_hole circle (at 3.81 0 180) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 28 /LED1))
|
||||
(model Discret.3dshapes/R3.wrl
|
||||
|
@ -1540,7 +1730,7 @@
|
|||
(fp_line (start 3.302 1.016) (end 3.302 0) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -3.302 -0.508) (end -2.794 -1.016) (layer F.SilkS) (width 0.15))
|
||||
(pad 1 thru_hole circle (at -3.81 0 180) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 106 "Net-(R3-Pad1)"))
|
||||
(net 104 "Net-(R3-Pad1)"))
|
||||
(pad 2 thru_hole circle (at 3.81 0 180) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 101 VCC))
|
||||
(model Discret.3dshapes/R3.wrl
|
||||
|
@ -1644,7 +1834,8 @@
|
|||
(net 86 /REF11))
|
||||
(pad 9 thru_hole circle (at 8.89 0) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 85 /REF10))
|
||||
(pad 10 thru_hole circle (at 11.43 0) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS))
|
||||
(pad 10 thru_hole circle (at 11.43 0) (size 1.397 1.397) (drill 0.8128) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 145 "Net-(RR1-Pad10)"))
|
||||
(model Discret.3dshapes/r_pack9.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
|
@ -1681,14 +1872,14 @@
|
|||
)
|
||||
|
||||
(module LEDs:LED-5MM (layer Composant) (tedit 560D3011) (tstamp 322D32AC)
|
||||
(at 158.115 38.1 180)
|
||||
(at 155.58 38.06)
|
||||
(descr "LED 5mm round vertical")
|
||||
(tags "LED 5mm round vertical")
|
||||
(path /322D32AC)
|
||||
(fp_text reference D1 (at -2.355 -0.18 180) (layer F.SilkS)
|
||||
(fp_text reference D1 (at -2.355 -0.18) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value LED (at 1.524 -3.937 180) (layer F.Fab) hide
|
||||
(fp_text value LED (at 1.524 -3.937) (layer F.Fab) hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.5 -1.55) (end -1.5 1.55) (layer F.CrtYd) (width 0.05))
|
||||
|
@ -1696,13 +1887,13 @@
|
|||
(fp_arc (start 1.27 0) (end -1.23 -1.5) (angle 297.5) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -1.23 1.5) (end -1.23 -1.5) (layer F.SilkS) (width 0.15))
|
||||
(fp_circle (center 1.27 0) (end 0.97 -2.5) (layer F.SilkS) (width 0.15))
|
||||
(fp_text user K (at -1.905 1.905 180) (layer F.SilkS) hide
|
||||
(fp_text user K (at -1.905 1.905) (layer F.SilkS) hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(pad 1 thru_hole rect (at 0 0 270) (size 2 1.9) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 104 "Net-(D1-Pad1)"))
|
||||
(pad 2 thru_hole circle (at 2.54 0 180) (size 1.9 1.9) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)
|
||||
(pad 1 thru_hole rect (at 0 0 90) (size 2 1.9) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 100 GND))
|
||||
(pad 2 thru_hole circle (at 2.54 0) (size 1.9 1.9) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 143 "Net-(D1-Pad2)"))
|
||||
(model LEDs.3dshapes/LED-5MM.wrl
|
||||
(at (xyz 0.05 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
|
@ -1711,14 +1902,14 @@
|
|||
)
|
||||
|
||||
(module LEDs:LED-5MM (layer Composant) (tedit 560D3020) (tstamp 322D32BE)
|
||||
(at 168.275 38.1 180)
|
||||
(at 165.71 38.08)
|
||||
(descr "LED 5mm round vertical")
|
||||
(tags "LED 5mm round vertical")
|
||||
(path /322D32BE)
|
||||
(fp_text reference D2 (at -2.415 -0.02 180) (layer F.SilkS)
|
||||
(fp_text reference D2 (at -2.415 -0.02) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value LED (at 1.524 -3.937 180) (layer F.Fab) hide
|
||||
(fp_text value LED (at 1.524 -3.937) (layer F.Fab) hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.5 -1.55) (end -1.5 1.55) (layer F.CrtYd) (width 0.05))
|
||||
|
@ -1726,13 +1917,13 @@
|
|||
(fp_arc (start 1.27 0) (end -1.23 -1.5) (angle 297.5) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -1.23 1.5) (end -1.23 -1.5) (layer F.SilkS) (width 0.15))
|
||||
(fp_circle (center 1.27 0) (end 0.97 -2.5) (layer F.SilkS) (width 0.15))
|
||||
(fp_text user K (at -1.905 1.905 180) (layer F.SilkS) hide
|
||||
(fp_text user K (at -1.905 1.905) (layer F.SilkS) hide
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(pad 1 thru_hole rect (at 0 0 270) (size 2 1.9) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 105 "Net-(D2-Pad1)"))
|
||||
(pad 2 thru_hole circle (at 2.54 0 180) (size 1.9 1.9) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)
|
||||
(pad 1 thru_hole rect (at 0 0 90) (size 2 1.9) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 100 GND))
|
||||
(pad 2 thru_hole circle (at 2.54 0) (size 1.9 1.9) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)
|
||||
(net 144 "Net-(D2-Pad2)"))
|
||||
(model LEDs.3dshapes/LED-5MM.wrl
|
||||
(at (xyz 0.05 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
|
@ -2458,13 +2649,6 @@
|
|||
(segment (start 146.685 106.3625) (end 147.0025 106.68) (width 0.4318) (layer Cuivre) (net 99))
|
||||
(segment (start 151.4475 106.68) (end 151.765 106.3625) (width 0.4318) (layer Cuivre) (net 99))
|
||||
(segment (start 147.0025 106.68) (end 151.4475 106.68) (width 0.4318) (layer Cuivre) (net 99))
|
||||
(segment (start 155.575 38.1) (end 155.575 36.635) (width 0.5588) (layer Composant) (net 100))
|
||||
(segment (start 160.655 38.1) (end 165.735 38.1) (width 0.5588) (layer Composant) (net 100) (status 400))
|
||||
(segment (start 160.08 37.525) (end 160.655 38.1) (width 0.5588) (layer Composant) (net 100) (tstamp 560D2FBD))
|
||||
(segment (start 160.08 36.54) (end 160.08 37.525) (width 0.5588) (layer Composant) (net 100) (tstamp 560D2FBA))
|
||||
(segment (start 159.55 36.01) (end 160.08 36.54) (width 0.5588) (layer Composant) (net 100) (tstamp 560D2FAE))
|
||||
(segment (start 156.2 36.01) (end 159.55 36.01) (width 0.5588) (layer Composant) (net 100) (tstamp 560D2FAC))
|
||||
(segment (start 155.575 36.635) (end 156.2 36.01) (width 0.5588) (layer Composant) (net 100) (tstamp 560D2FAA))
|
||||
(segment (start 184.785 104.14) (end 184.785 101.346) (width 0.5588) (layer Cuivre) (net 100) (status C00))
|
||||
(segment (start 184.785 101.346) (end 184.785 98.6028) (width 0.5588) (layer Cuivre) (net 100) (status C00))
|
||||
(segment (start 184.785 98.6028) (end 184.785 95.9104) (width 0.5588) (layer Cuivre) (net 100) (status C00))
|
||||
|
@ -2532,7 +2716,6 @@
|
|||
(segment (start 149.225 121.92) (end 172.72 121.92) (width 0.5588) (layer Cuivre) (net 100))
|
||||
(segment (start 154.305 43.18) (end 155.575 44.45) (width 0.5588) (layer Composant) (net 100))
|
||||
(segment (start 154.305 39.37) (end 154.305 43.18) (width 0.5588) (layer Composant) (net 100))
|
||||
(segment (start 155.575 38.1) (end 154.305 39.37) (width 0.5588) (layer Composant) (net 100) (status 800))
|
||||
(segment (start 155.575 44.45) (end 155.575 52.07) (width 0.5588) (layer Composant) (net 100) (status 400))
|
||||
(segment (start 98.425 105.41) (end 88.265 105.41) (width 0.5588) (layer Cuivre) (net 100) (status 800))
|
||||
(segment (start 88.265 105.41) (end 85.09 108.585) (width 0.5588) (layer Cuivre) (net 100))
|
||||
|
@ -2557,6 +2740,14 @@
|
|||
(segment (start 118.745 124.46) (end 123.825 124.46) (width 0.5588) (layer Cuivre) (net 100) (status C00))
|
||||
(segment (start 100.965 105.41) (end 103.505 105.41) (width 0.5588) (layer Cuivre) (net 100) (status C00))
|
||||
(segment (start 167.005 88.9) (end 167.005 83.82) (width 0.5588) (layer Composant) (net 100))
|
||||
(segment (start 155.575 38.1) (end 155.575 36.635) (width 0.5588) (layer Composant) (net 100))
|
||||
(segment (start 155.575 36.635) (end 156.2 36.01) (width 0.5588) (layer Composant) (net 100) (tstamp 560D2FAA))
|
||||
(segment (start 155.575 38.1) (end 154.305 39.37) (width 0.5588) (layer Composant) (net 100) (status 800))
|
||||
(segment (start 156.2 36.01) (end 159.55 36.01) (width 0.5588) (layer Composant) (net 100) (tstamp 560D2FAC))
|
||||
(segment (start 160.655 38.1) (end 165.735 38.1) (width 0.5588) (layer Composant) (net 100) (status 400))
|
||||
(segment (start 160.08 37.525) (end 160.655 38.1) (width 0.5588) (layer Composant) (net 100) (tstamp 560D2FBD))
|
||||
(segment (start 160.08 36.54) (end 160.08 37.525) (width 0.5588) (layer Composant) (net 100) (tstamp 560D2FBA))
|
||||
(segment (start 159.55 36.01) (end 160.08 36.54) (width 0.5588) (layer Composant) (net 100) (tstamp 560D2FAE))
|
||||
(segment (start 84.455 57.15) (end 86.995 59.69) (width 0.5588) (layer Composant) (net 101) (status 800))
|
||||
(segment (start 170.815 119.38) (end 170.815 128.27) (width 0.5588) (layer Composant) (net 101))
|
||||
(segment (start 86.995 113.03) (end 86.995 91.44) (width 0.5588) (layer Composant) (net 101) (status 800))
|
||||
|
@ -2634,14 +2825,14 @@
|
|||
(segment (start 126.365 97.79) (end 127.635 99.06) (width 0.4318) (layer Cuivre) (net 103) (status 400))
|
||||
(segment (start 114.935 99.06) (end 113.665 97.79) (width 0.4318) (layer Cuivre) (net 103) (status 400))
|
||||
(segment (start 122.555 97.79) (end 126.365 97.79) (width 0.4318) (layer Cuivre) (net 103))
|
||||
(segment (start 155.575 41.91) (end 158.115 39.37) (width 0.4318) (layer Composant) (net 104) (status 800))
|
||||
(segment (start 158.115 39.37) (end 158.115 38.1) (width 0.4318) (layer Composant) (net 104) (status 400))
|
||||
(segment (start 168.275 41.91) (end 168.275 38.1) (width 0.4318) (layer Composant) (net 105) (status C00))
|
||||
(segment (start 92.075 57.15) (end 92.075 60.96) (width 0.4318) (layer Cuivre) (net 106) (status C00))
|
||||
(segment (start 136.525 116.84) (end 136.525 113.03) (width 0.4318) (layer Composant) (net 107) (status C00))
|
||||
(segment (start 133.985 116.84) (end 133.985 113.03) (width 0.4318) (layer Composant) (net 108) (status C00))
|
||||
(segment (start 131.445 116.84) (end 131.445 113.03) (width 0.4318) (layer Composant) (net 109) (status C00))
|
||||
(segment (start 128.905 116.84) (end 128.905 113.03) (width 0.4318) (layer Composant) (net 110) (status C00))
|
||||
(segment (start 92.075 57.15) (end 92.075 60.96) (width 0.4318) (layer Cuivre) (net 104) (status C00))
|
||||
(segment (start 136.525 116.84) (end 136.525 113.03) (width 0.4318) (layer Composant) (net 105) (status C00))
|
||||
(segment (start 133.985 116.84) (end 133.985 113.03) (width 0.4318) (layer Composant) (net 106) (status C00))
|
||||
(segment (start 131.445 116.84) (end 131.445 113.03) (width 0.4318) (layer Composant) (net 107) (status C00))
|
||||
(segment (start 128.905 116.84) (end 128.905 113.03) (width 0.4318) (layer Composant) (net 108) (status C00))
|
||||
(segment (start 158.115 39.37) (end 158.115 38.1) (width 0.4318) (layer Composant) (net 143) (status 400))
|
||||
(segment (start 155.575 41.91) (end 158.115 39.37) (width 0.4318) (layer Composant) (net 143) (status 800))
|
||||
(segment (start 168.275 41.91) (end 168.275 38.1) (width 0.4318) (layer Composant) (net 144) (status C00))
|
||||
|
||||
(zone (net 100) (net_name GND) (layer Cuivre) (tstamp 4CDEC22B) (hatch edge 0.508)
|
||||
(connect_pads (clearance 0.508))
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,4 +1,4 @@
|
|||
update=18/05/2015 09:03:59
|
||||
update=23/01/2016 15:05:13
|
||||
version=1
|
||||
last_client=kicad
|
||||
[common]
|
||||
|
|
|
@ -1,17 +1,7 @@
|
|||
EESchema Schematic File Version 2
|
||||
LIBS:power
|
||||
LIBS:device
|
||||
LIBS:conn
|
||||
LIBS:linear
|
||||
LIBS:regul
|
||||
LIBS:74xx
|
||||
LIBS:cmos4000
|
||||
LIBS:adc-dac
|
||||
LIBS:memory
|
||||
LIBS:xilinx
|
||||
LIBS:special
|
||||
LIBS:image
|
||||
LIBS:interf_u-cache
|
||||
LIBS:interf_u_schlib
|
||||
LIBS:power
|
||||
EELAYER 25 0
|
||||
EELAYER END
|
||||
$Descr A3 16535 11693
|
||||
|
@ -28,7 +18,7 @@ Comment4 "Comment 4"
|
|||
$EndDescr
|
||||
$Bitmap
|
||||
Pos 11050 10550
|
||||
Scale 1.000000
|
||||
Scale 1,000000
|
||||
Data
|
||||
89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 00 00 00 E5 00 00 01 0E 08 02 00 00 00 F9 5F 47
|
||||
B4 00 00 00 03 73 42 49 54 08 08 08 DB E1 4F E0 00 00 20 00 49 44 41 54 78 9C EC BD 77 94 5D 47
|
||||
|
@ -1181,7 +1171,7 @@ BF FD 96 77 9E 38 7E F1 EC E1 55 E2 AF 2F E0 1B 5F F9 FC FE BD 4F B9 56 EB C9 C9
|
|||
29 65 D5 9A 89 35 EB 37 F6 E3 02 4F 95 57 89 BF 1E 63 D9 CA D5 CB 7E 65 BC F3 FF E1 D5 7A 1F CE
|
||||
A2 94 8E 79 E6 79 49 E6 FD 75 9E B9 C4 BC BF CE 33 97 98 F7 D7 79 E6 12 F3 FE 3A CF 5C E2 E7 E2
|
||||
03 93 93 93 FD BA 8E 79 E6 39 19 8E FB EB DC 15 0B E6 F9 D5 61 7E 3F 30 CF 5C 62 DE 5F E7 99 4B
|
||||
FC 1F 94 BD 62 D3 EE A5 8B 6B 00 00 00 00 49 45 4E 44 AE 42 60 82 F9
|
||||
FC 1F 94 BD 62 D3 EE A5 8B 6B 00 00 00 00 49 45 4E 44 AE 42 60 82 0E
|
||||
EndData
|
||||
$EndBitmap
|
||||
Wire Bus Line
|
||||
|
@ -1203,7 +1193,7 @@ Wire Wire Line
|
|||
Wire Wire Line
|
||||
3150 2250 3650 2250
|
||||
Wire Wire Line
|
||||
1000 9850 1000 9950
|
||||
1000 9750 1000 9850
|
||||
Wire Wire Line
|
||||
4500 3100 4000 3100
|
||||
Wire Wire Line
|
||||
|
@ -1448,9 +1438,9 @@ Wire Wire Line
|
|||
Wire Wire Line
|
||||
10100 4200 9650 4200
|
||||
Wire Wire Line
|
||||
13450 1500 13000 1500
|
||||
13650 1500 13200 1500
|
||||
Wire Wire Line
|
||||
13450 1050 13000 1050
|
||||
13650 1050 13200 1050
|
||||
Wire Wire Line
|
||||
10100 4600 9650 4600
|
||||
Wire Wire Line
|
||||
|
@ -1521,7 +1511,7 @@ Wire Wire Line
|
|||
Wire Wire Line
|
||||
12300 3400 12700 3400
|
||||
Wire Wire Line
|
||||
15200 3700 15200 3500
|
||||
15000 3700 15000 3500
|
||||
Wire Wire Line
|
||||
12300 4200 12850 4200
|
||||
Wire Wire Line
|
||||
|
@ -1769,13 +1759,13 @@ Wire Bus Line
|
|||
Wire Bus Line
|
||||
3900 2450 3900 3700
|
||||
Wire Wire Line
|
||||
12300 3700 13700 3700
|
||||
12300 3700 13800 3700
|
||||
Wire Wire Line
|
||||
14200 3700 14650 3700
|
||||
14100 3700 14650 3700
|
||||
Wire Wire Line
|
||||
15200 3700 15150 3700
|
||||
15000 3700 14950 3700
|
||||
Wire Wire Line
|
||||
15200 3500 12300 3500
|
||||
15000 3500 12300 3500
|
||||
Entry Bus Bus
|
||||
3750 2350 3850 2450
|
||||
$Comp
|
||||
|
@ -1784,7 +1774,7 @@ U 1 1 4A087146
|
|||
P 5250 1950
|
||||
F 0 "U3" H 5250 2525 60 0000 C BNN
|
||||
F 1 "74LS541" H 5250 1375 60 0000 C TNN
|
||||
F 2 "dip_sockets:DIP-20__300" H 5250 1250 60 0000 C CNN
|
||||
F 2 "Dip_sockets:DIP-20__300" H 5250 1250 60 0000 C CNN
|
||||
F 3 "" H 5250 1950 60 0001 C CNN
|
||||
1 5250 1950
|
||||
1 0 0 -1
|
||||
|
@ -1794,23 +1784,23 @@ Selection
|
|||
$Comp
|
||||
L GND #PWR01
|
||||
U 1 1 43020357
|
||||
P 14400 4800
|
||||
F 0 "#PWR01" H 14400 4800 30 0001 C CNN
|
||||
F 1 "GND" H 14400 4730 30 0001 C CNN
|
||||
F 2 "" H 14400 4800 60 0001 C CNN
|
||||
F 3 "" H 14400 4800 60 0001 C CNN
|
||||
1 14400 4800
|
||||
P 14400 4700
|
||||
F 0 "#PWR01" H 14400 4700 30 0001 C CNN
|
||||
F 1 "GND" H 14400 4630 30 0001 C CNN
|
||||
F 2 "" H 14400 4700 60 0001 C CNN
|
||||
F 3 "" H 14400 4700 60 0001 C CNN
|
||||
1 14400 4700
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L GND #PWR02
|
||||
U 1 1 43020354
|
||||
P 13500 4800
|
||||
F 0 "#PWR02" H 13500 4800 30 0001 C CNN
|
||||
F 1 "GND" H 13500 4730 30 0001 C CNN
|
||||
F 2 "" H 13500 4800 60 0001 C CNN
|
||||
F 3 "" H 13500 4800 60 0001 C CNN
|
||||
1 13500 4800
|
||||
P 13500 4700
|
||||
F 0 "#PWR02" H 13500 4700 30 0001 C CNN
|
||||
F 1 "GND" H 13500 4630 30 0001 C CNN
|
||||
F 2 "" H 13500 4700 60 0001 C CNN
|
||||
F 3 "" H 13500 4700 60 0001 C CNN
|
||||
1 13500 4700
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
|
@ -1838,23 +1828,23 @@ $EndComp
|
|||
$Comp
|
||||
L GND #PWR05
|
||||
U 1 1 43020328
|
||||
P 1000 9950
|
||||
F 0 "#PWR05" H 1000 9950 30 0001 C CNN
|
||||
F 1 "GND" H 1000 9880 30 0001 C CNN
|
||||
F 2 "" H 1000 9950 60 0001 C CNN
|
||||
F 3 "" H 1000 9950 60 0001 C CNN
|
||||
1 1000 9950
|
||||
P 1000 9850
|
||||
F 0 "#PWR05" H 1000 9850 30 0001 C CNN
|
||||
F 1 "GND" H 1000 9780 30 0001 C CNN
|
||||
F 2 "" H 1000 9850 60 0001 C CNN
|
||||
F 3 "" H 1000 9850 60 0001 C CNN
|
||||
1 1000 9850
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L PWR_FLAG #FLG06
|
||||
U 1 1 38CEA284
|
||||
P 2850 9950
|
||||
F 0 "#FLG06" H 2850 10220 30 0001 C CNN
|
||||
F 1 "PWR_FLAG" H 2850 10180 30 0000 C CNN
|
||||
F 2 "" H 2850 9950 60 0001 C CNN
|
||||
F 3 "" H 2850 9950 60 0001 C CNN
|
||||
1 2850 9950
|
||||
P 2850 9850
|
||||
F 0 "#FLG06" H 2850 10120 30 0001 C CNN
|
||||
F 1 "PWR_FLAG" H 2850 10080 30 0000 C CNN
|
||||
F 2 "" H 2850 9850 60 0001 C CNN
|
||||
F 3 "" H 2850 9850 60 0001 C CNN
|
||||
1 2850 9850
|
||||
-1 0 0 1
|
||||
$EndComp
|
||||
$Comp
|
||||
|
@ -1915,12 +1905,12 @@ $EndComp
|
|||
$Comp
|
||||
L VCC #PWR012
|
||||
U 1 1 4A33B1D2
|
||||
P 6050 9900
|
||||
F 0 "#PWR012" H 6050 10000 30 0001 C CNN
|
||||
F 1 "VCC" H 6050 10000 40 0000 C CNN
|
||||
F 2 "" H 6050 9900 60 0001 C CNN
|
||||
F 3 "" H 6050 9900 60 0001 C CNN
|
||||
1 6050 9900
|
||||
P 6250 9900
|
||||
F 0 "#PWR012" H 6250 10000 30 0001 C CNN
|
||||
F 1 "VCC" H 6250 10000 40 0000 C CNN
|
||||
F 2 "" H 6250 9900 60 0001 C CNN
|
||||
F 3 "" H 6250 9900 60 0001 C CNN
|
||||
1 6250 9900
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
|
@ -2064,7 +2054,7 @@ U 1 1 325679C1
|
|||
P 2750 8300
|
||||
F 0 "RR1" V 2800 8300 70 0000 C CNN
|
||||
F 1 "9x1K" V 2770 8630 70 0000 C CNN
|
||||
F 2 "discret:r_pack9" V 2900 8350 60 0000 C CNN
|
||||
F 2 "Discret:r_pack9" V 2900 8350 60 0000 C CNN
|
||||
F 3 "" H 2750 8300 60 0001 C CNN
|
||||
1 2750 8300
|
||||
0 1 1 0
|
||||
|
@ -2281,9 +2271,9 @@ Text Label 9700 4700 0 60 ~ 0
|
|||
MA4
|
||||
Text Label 9700 4600 0 60 ~ 0
|
||||
MA15
|
||||
Text Label 13000 1050 0 60 ~ 0
|
||||
Text Label 13200 1050 0 60 ~ 0
|
||||
LED1
|
||||
Text Label 13000 1500 0 60 ~ 0
|
||||
Text Label 13200 1500 0 60 ~ 0
|
||||
LED2
|
||||
Text Label 9700 4200 0 60 ~ 0
|
||||
MA5
|
||||
|
@ -2320,12 +2310,12 @@ MD0
|
|||
$Comp
|
||||
L R R3
|
||||
U 1 1 324002E6
|
||||
P 6350 9900
|
||||
F 0 "R3" V 6430 9900 50 0000 C CNN
|
||||
F 1 "10K" V 6350 9900 50 0000 C CNN
|
||||
F 2 "discret:R3" V 6500 9900 50 0000 C CNN
|
||||
F 3 "" H 6350 9900 60 0001 C CNN
|
||||
1 6350 9900
|
||||
P 6450 9900
|
||||
F 0 "R3" V 6530 9900 50 0000 C CNN
|
||||
F 1 "10K" V 6450 9900 50 0000 C CNN
|
||||
F 2 "Discret:R3" V 6600 9900 50 0000 C CNN
|
||||
F 3 "" H 6450 9900 60 0001 C CNN
|
||||
1 6450 9900
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
Text Label 6700 10100 0 60 ~ 0
|
||||
|
@ -2374,7 +2364,7 @@ U 1 1 3240023F
|
|||
P 7700 9050
|
||||
F 0 "U5" H 7700 10200 70 0000 C CNN
|
||||
F 1 "628128" H 7700 7850 70 0000 C CNN
|
||||
F 2 "dip_sockets:DIP-32__600" H 7700 7750 50 0000 C CNN
|
||||
F 2 "Dip_sockets:DIP-32__600" H 7700 7750 50 0000 C CNN
|
||||
F 3 "" H 7700 9050 60 0001 C CNN
|
||||
1 7700 9050
|
||||
1 0 0 -1
|
||||
|
@ -2614,23 +2604,23 @@ $EndComp
|
|||
$Comp
|
||||
L C C3
|
||||
U 1 1 32307ED4
|
||||
P 14400 4600
|
||||
F 0 "C3" H 14650 4650 50 0000 C CNN
|
||||
F 1 "47pF" H 14650 4550 50 0000 C CNN
|
||||
F 2 "discret:C1" H 14650 4450 50 0000 C CNN
|
||||
F 3 "" H 14400 4600 60 0001 C CNN
|
||||
1 14400 4600
|
||||
P 14400 4550
|
||||
F 0 "C3" H 14650 4600 50 0000 C CNN
|
||||
F 1 "47pF" H 14650 4500 50 0000 C CNN
|
||||
F 2 "Discret:C1" H 14650 4400 30 0000 C CNN
|
||||
F 3 "" H 14400 4550 60 0001 C CNN
|
||||
1 14400 4550
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L C C2
|
||||
U 1 1 32307ECF
|
||||
P 13500 4600
|
||||
F 0 "C2" H 13750 4650 50 0000 C CNN
|
||||
F 1 "47pF" H 13750 4550 50 0000 C CNN
|
||||
F 2 "discret:C1" H 13750 4450 50 0000 C CNN
|
||||
F 3 "" H 13500 4600 60 0001 C CNN
|
||||
1 13500 4600
|
||||
P 13500 4550
|
||||
F 0 "C2" H 13750 4600 50 0000 C CNN
|
||||
F 1 "47pF" H 13750 4500 50 0000 C CNN
|
||||
F 2 "Discret:C1" H 13750 4400 30 0000 C CNN
|
||||
F 3 "" H 13500 4550 60 0001 C CNN
|
||||
1 13500 4550
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
|
@ -2638,8 +2628,8 @@ L CRYSTAL X1
|
|||
U 1 1 32307EC0
|
||||
P 13950 4150
|
||||
F 0 "X1" H 13950 4350 70 0000 C CNN
|
||||
F 1 "8MHz" H 13950 3950 70 0000 C CNN
|
||||
F 2 "discret:HC-18UH" H 13950 3850 50 0000 C CNN
|
||||
F 1 "8MHz" H 13950 3950 50 0000 C CNN
|
||||
F 2 "Discret:HC-18UH" H 13950 3900 30 0000 C CNN
|
||||
F 3 "" H 13950 4150 60 0001 C CNN
|
||||
1 13950 4150
|
||||
1 0 0 -1
|
||||
|
@ -2647,12 +2637,12 @@ $EndComp
|
|||
$Comp
|
||||
L R R2
|
||||
U 1 1 32307EAA
|
||||
P 14900 3700
|
||||
F 0 "R2" V 14800 3700 50 0000 C CNN
|
||||
F 1 "1K" V 14900 3700 50 0000 C CNN
|
||||
F 2 "discret:R3" V 15000 3700 50 0000 C CNN
|
||||
F 3 "" H 14900 3700 60 0001 C CNN
|
||||
1 14900 3700
|
||||
P 14800 3700
|
||||
F 0 "R2" V 14700 3700 50 0000 C CNN
|
||||
F 1 "1K" V 14800 3700 50 0000 C CNN
|
||||
F 2 "Discret:R3" V 14900 3700 50 0000 C CNN
|
||||
F 3 "" H 14800 3700 60 0001 C CNN
|
||||
1 14800 3700
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
$Comp
|
||||
|
@ -2661,7 +2651,7 @@ U 1 1 32307EA1
|
|||
P 13950 3700
|
||||
F 0 "R1" V 13850 3700 50 0000 C CNN
|
||||
F 1 "100K" V 13950 3700 50 0000 C CNN
|
||||
F 2 "discret:R3" V 14050 3700 50 0000 C CNN
|
||||
F 2 "Discret:R3" V 14050 3700 50 0000 C CNN
|
||||
F 3 "" H 13950 3700 60 0001 C CNN
|
||||
1 13950 3700
|
||||
0 1 1 0
|
||||
|
@ -2669,45 +2659,45 @@ $EndComp
|
|||
$Comp
|
||||
L CP C1
|
||||
U 1 1 32307DE2
|
||||
P 2850 9650
|
||||
F 0 "C1" H 2950 9700 50 0000 L CNN
|
||||
F 1 "47uF" H 2950 9600 50 0000 L CNN
|
||||
F 2 "discret:CP6" H 3100 9500 50 0000 C CNN
|
||||
F 3 "" H 2850 9650 60 0001 C CNN
|
||||
1 2850 9650
|
||||
P 2850 9600
|
||||
F 0 "C1" H 2968 9692 50 0000 L CNN
|
||||
F 1 "47uF" H 2968 9600 50 0000 L CNN
|
||||
F 2 "Discret:CP6" H 2968 9508 50 0000 L CNN
|
||||
F 3 "" H 2850 9600 60 0001 C CNN
|
||||
1 2850 9600
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L CP C4
|
||||
U 1 1 32307DCF
|
||||
P 2200 9650
|
||||
F 0 "C4" H 2300 9700 50 0000 L CNN
|
||||
F 1 "47uF" H 2300 9600 50 0000 L CNN
|
||||
F 2 "discret:CP6" H 2450 9500 50 0000 C CNN
|
||||
F 3 "" H 2200 9650 60 0001 C CNN
|
||||
1 2200 9650
|
||||
P 2200 9600
|
||||
F 0 "C4" H 2300 9650 50 0000 L CNN
|
||||
F 1 "47uF" H 2300 9550 50 0000 L CNN
|
||||
F 2 "Discret:CP6" H 2450 9450 50 0000 C CNN
|
||||
F 3 "" H 2200 9600 60 0001 C CNN
|
||||
1 2200 9600
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L CP C5
|
||||
U 1 1 32307DCA
|
||||
P 1650 9650
|
||||
F 0 "C5" H 1750 9700 50 0000 L CNN
|
||||
F 1 "47uF" H 1750 9600 50 0000 L CNN
|
||||
F 2 "discret:CP6" H 1900 9500 50 0000 C CNN
|
||||
F 3 "" H 1650 9650 60 0001 C CNN
|
||||
1 1650 9650
|
||||
P 1650 9600
|
||||
F 0 "C5" H 1750 9650 50 0000 L CNN
|
||||
F 1 "47uF" H 1750 9550 50 0000 L CNN
|
||||
F 2 "Discret:CP6" H 1900 9450 50 0000 C CNN
|
||||
F 3 "" H 1650 9600 60 0001 C CNN
|
||||
1 1650 9600
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L CP C6
|
||||
U 1 1 32307DC0
|
||||
P 1000 9650
|
||||
F 0 "C6" H 1100 9700 50 0000 L CNN
|
||||
F 1 "47uF" H 1100 9600 50 0000 L CNN
|
||||
F 2 "discret:CP6" H 1250 9500 50 0000 C CNN
|
||||
F 3 "" H 1000 9650 60 0001 C CNN
|
||||
1 1000 9650
|
||||
P 1000 9600
|
||||
F 0 "C6" H 1100 9650 50 0000 L CNN
|
||||
F 1 "47uF" H 1100 9550 50 0000 L CNN
|
||||
F 2 "Discret:CP6" H 1250 9450 50 0000 C CNN
|
||||
F 3 "" H 1000 9600 60 0001 C CNN
|
||||
1 1000 9600
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Text Label 3250 2250 0 60 ~ 0
|
||||
|
@ -2732,7 +2722,7 @@ U 1 1 322D35B4
|
|||
P 4600 6900
|
||||
F 0 "U2" H 4600 7850 60 0000 C CNN
|
||||
F 1 "74LS688" H 4600 5950 60 0000 C CIB
|
||||
F 2 "dip_sockets:DIP-20__300" H 4600 5850 50 0000 C CNN
|
||||
F 2 "Dip_sockets:DIP-20__300" H 4600 5850 50 0000 C CNN
|
||||
F 3 "" H 4600 6900 60 0001 C CNN
|
||||
1 4600 6900
|
||||
1 0 0 -1
|
||||
|
@ -2743,7 +2733,7 @@ U 1 1 322D32FA
|
|||
P 11200 5700
|
||||
F 0 "U9" H 11200 8450 70 0000 C CNN
|
||||
F 1 "4003APG120" H 11200 2950 70 0000 C CNN
|
||||
F 2 "PGA120" H 11200 2850 50 0000 C CNN
|
||||
F 2 "Sockets_PGA:PGA120" H 11200 2850 50 0000 C CNN
|
||||
F 3 "" H 11200 5700 60 0001 C CNN
|
||||
F 4 "50$" H 11200 5700 60 0001 C CNN "price"
|
||||
F 5 "test" H 11200 5700 60 0001 C CNN "Field5"
|
||||
|
@ -2754,44 +2744,44 @@ $Comp
|
|||
L LED D2
|
||||
U 1 1 322D32BE
|
||||
P 14250 2000
|
||||
F 0 "D2" V 14150 1850 50 0000 C CNN
|
||||
F 1 "LED" V 14250 2250 50 0000 C CNN
|
||||
F 2 "discret:LEDV" V 14350 2250 50 0000 C CNN
|
||||
F 0 "D2" V 14326 1892 50 0000 R CNN
|
||||
F 1 "LED" V 14234 1892 50 0000 R CNN
|
||||
F 2 "LEDs:LED-5MM" V 14158 1892 30 0000 R CNN
|
||||
F 3 "" H 14250 2000 60 0001 C CNN
|
||||
1 14250 2000
|
||||
0 1 1 0
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
$Comp
|
||||
L LED D1
|
||||
U 1 1 322D32AC
|
||||
P 14650 1550
|
||||
F 0 "D1" V 14550 1400 50 0000 C CNN
|
||||
F 1 "LED" V 14650 1800 50 0000 C CNN
|
||||
F 2 "discret:LEDV" V 14750 1800 50 0000 C CNN
|
||||
F 0 "D1" V 14726 1442 50 0000 R CNN
|
||||
F 1 "LED" V 14634 1442 50 0000 R CNN
|
||||
F 2 "LEDs:LED-5MM" V 14558 1442 30 0000 R CNN
|
||||
F 3 "" H 14650 1550 60 0001 C CNN
|
||||
1 14650 1550
|
||||
0 1 1 0
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
$Comp
|
||||
L R R5
|
||||
U 1 1 322D32A0
|
||||
P 13700 1500
|
||||
F 0 "R5" V 13600 1500 50 0000 C CNN
|
||||
F 1 "330" V 13700 1500 50 0000 C CNN
|
||||
F 2 "discret:R3" V 13800 1500 50 0000 C CNN
|
||||
F 3 "" H 13700 1500 60 0001 C CNN
|
||||
1 13700 1500
|
||||
P 13800 1500
|
||||
F 0 "R5" V 13700 1500 50 0000 C CNN
|
||||
F 1 "330" V 13800 1500 50 0000 C CNN
|
||||
F 2 "Discret:R3" V 13900 1500 50 0000 C CNN
|
||||
F 3 "" H 13800 1500 60 0001 C CNN
|
||||
1 13800 1500
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
$Comp
|
||||
L R R4
|
||||
U 1 1 322D3295
|
||||
P 13700 1050
|
||||
F 0 "R4" V 13600 1050 50 0000 C CNN
|
||||
F 1 "330" V 13700 1050 50 0000 C CNN
|
||||
F 2 "discret:R3" V 13800 1050 50 0000 C CNN
|
||||
F 3 "" H 13700 1050 60 0001 C CNN
|
||||
1 13700 1050
|
||||
P 13800 1050
|
||||
F 0 "R4" V 13700 1050 50 0000 C CNN
|
||||
F 1 "330" V 13800 1050 50 0000 C CNN
|
||||
F 2 "Discret:R3" V 13900 1050 50 0000 C CNN
|
||||
F 3 "" H 13800 1050 60 0001 C CNN
|
||||
1 13800 1050
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
$Comp
|
||||
|
@ -2800,7 +2790,7 @@ U 1 1 322D321C
|
|||
P 7650 1800
|
||||
F 0 "U8" H 7650 2700 70 0000 C CNN
|
||||
F 1 "EP600" H 7650 850 70 0000 C CNN
|
||||
F 2 "dip_sockets:DIP-24__300" H 7700 750 60 0000 C CNN
|
||||
F 2 "Dip_sockets:DIP-24__300" H 7700 750 60 0000 C CNN
|
||||
F 3 "" H 7650 1800 60 0001 C CNN
|
||||
1 7650 1800
|
||||
1 0 0 -1
|
||||
|
@ -2811,7 +2801,7 @@ U 1 1 322D31F4
|
|||
P 5200 3600
|
||||
F 0 "U1" H 5200 4200 60 0000 C CNN
|
||||
F 1 "74LS245" H 5200 2950 60 0000 C CNN
|
||||
F 2 "dip_sockets:DIP-20__300" H 5200 2850 50 0000 C CNN
|
||||
F 2 "Dip_sockets:DIP-20__300" H 5200 2850 50 0000 C CNN
|
||||
F 3 "" H 5200 3600 60 0001 C CNN
|
||||
1 5200 3600
|
||||
1 0 0 -1
|
||||
|
@ -2828,17 +2818,17 @@ F 3 "" H 2250 2950 60 0001 C CNN
|
|||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
1000 9900 2850 9900
|
||||
1000 9800 2850 9800
|
||||
Wire Wire Line
|
||||
2850 9850 2850 9950
|
||||
Connection ~ 1000 9900
|
||||
Connection ~ 2850 9900
|
||||
2850 9750 2850 9850
|
||||
Connection ~ 1000 9800
|
||||
Connection ~ 2850 9800
|
||||
Wire Wire Line
|
||||
2200 9850 2200 9900
|
||||
Connection ~ 2200 9900
|
||||
2200 9750 2200 9800
|
||||
Connection ~ 2200 9800
|
||||
Wire Wire Line
|
||||
1650 9850 1650 9900
|
||||
Connection ~ 1650 9900
|
||||
1650 9750 1650 9800
|
||||
Connection ~ 1650 9800
|
||||
Wire Wire Line
|
||||
1000 9350 1000 9450
|
||||
Wire Wire Line
|
||||
|
@ -2870,7 +2860,7 @@ Wire Wire Line
|
|||
Wire Wire Line
|
||||
6800 1050 6850 1050
|
||||
Wire Wire Line
|
||||
6050 9900 6100 9900
|
||||
6250 9900 6300 9900
|
||||
Wire Wire Line
|
||||
3300 7950 3250 7950
|
||||
$EndSCHEMATC
|
||||
|
|
|
@ -355,20 +355,22 @@ ENDDEF
|
|||
# C
|
||||
#
|
||||
DEF C C 0 10 N Y 1 F N
|
||||
F0 "C" 0 100 40 H V L CNN
|
||||
F1 "C" 6 -85 40 H V L CNN
|
||||
F0 "C" 25 100 50 H V L CNN
|
||||
F1 "C" 25 -100 50 H V L CNN
|
||||
F2 "" 38 -150 30 H V C CNN
|
||||
F3 "" 0 100 30 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
SM*
|
||||
C?
|
||||
C1-1
|
||||
C_????_*
|
||||
C_????
|
||||
SMD*_c
|
||||
Capacitor*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 20 -80 -30 80 -30 N
|
||||
P 2 0 1 20 -80 30 80 30 N
|
||||
X ~ 1 0 200 170 D 40 40 1 1 P
|
||||
X ~ 2 0 -200 170 U 40 40 1 1 P
|
||||
X ~ 1 0 150 110 D 40 40 1 1 P
|
||||
X ~ 2 0 -150 110 U 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
|
@ -402,21 +404,29 @@ ENDDEF
|
|||
#
|
||||
# CP
|
||||
#
|
||||
DEF CP C 0 10 N N 1 F N
|
||||
F0 "C" 50 100 40 H V L CNN
|
||||
F1 "CP" 50 -100 40 H V L CNN
|
||||
F2 "" 100 -150 30 H V C CNN
|
||||
F3 "" 50 100 30 H V C CNN
|
||||
ALIAS CAPAPOL
|
||||
DEF CP C 0 10 N Y 1 F N
|
||||
F0 "C" 25 100 50 H V L CNN
|
||||
F1 "CP" 25 -100 50 H V L CNN
|
||||
F2 "" 38 -150 30 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
CP*
|
||||
SM*
|
||||
Elko*
|
||||
TantalC*
|
||||
C*elec
|
||||
c_elec*
|
||||
SMD*_Pol
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 4 0 1 8 -80 50 -80 -50 80 -50 80 50 N
|
||||
P 4 0 1 0 -50 50 -50 -20 50 -20 50 50 F
|
||||
X ~ 1 0 200 150 D 40 40 1 1 P
|
||||
X ~ 2 0 -200 150 U 40 40 1 1 P
|
||||
S -90 20 -90 40 0 1 0 N
|
||||
S -90 20 90 20 0 1 0 N
|
||||
S -70 90 -30 90 0 1 0 N
|
||||
S -50 70 -50 110 0 1 0 N
|
||||
S 90 -20 -90 -40 0 1 0 F
|
||||
S 90 40 -90 40 0 1 0 N
|
||||
S 90 40 90 20 0 1 0 N
|
||||
X ~ 1 0 150 110 D 40 40 1 1 P
|
||||
X ~ 2 0 -150 110 U 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
|
@ -599,12 +609,12 @@ $FPLIST
|
|||
LEDV
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 0 50 50 50 -50 N
|
||||
P 3 0 1 0 -50 50 50 0 -50 -50 F
|
||||
P 3 0 1 0 65 -40 110 -80 105 -55 N
|
||||
P 3 0 1 0 80 -25 125 -65 120 -40 N
|
||||
X A 1 -200 0 150 R 40 40 1 1 P
|
||||
X K 2 200 0 150 L 40 40 1 1 P
|
||||
P 2 0 1 0 -50 50 -50 -50 N
|
||||
P 3 0 1 0 -80 -25 -125 -65 -120 -40 N
|
||||
P 3 0 1 0 -65 -40 -110 -80 -105 -55 N
|
||||
P 3 0 1 0 50 50 -50 0 50 -50 F
|
||||
X K 1 -200 0 150 R 40 40 1 1 P
|
||||
X A 2 200 0 150 L 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
|
@ -624,29 +634,26 @@ ENDDEF
|
|||
# R
|
||||
#
|
||||
DEF R R 0 0 N Y 1 F N
|
||||
F0 "R" 80 0 40 V V C CNN
|
||||
F1 "R" 7 1 40 V V C CNN
|
||||
F0 "R" 80 0 50 V V C CNN
|
||||
F1 "R" 0 0 50 V V C CNN
|
||||
F2 "" -70 0 30 V V C CNN
|
||||
F3 "" 0 0 30 H V C CNN
|
||||
$FPLIST
|
||||
R?
|
||||
SM0603
|
||||
SM0805
|
||||
R?-*
|
||||
SM1206
|
||||
R_*
|
||||
Resistor_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -40 150 40 -150 0 1 12 N
|
||||
X ~ 1 0 250 100 D 60 60 1 1 P
|
||||
X ~ 2 0 -250 100 U 60 60 1 1 P
|
||||
S -40 -100 40 100 0 1 10 N
|
||||
X ~ 1 0 150 50 D 60 60 1 1 P
|
||||
X ~ 2 0 -150 50 U 60 60 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# RR9
|
||||
#
|
||||
DEF RR9 RR 0 40 Y N 1 F N
|
||||
F0 "RR" 50 600 70 H V C CNN
|
||||
F1 "RR9" 30 0 70 V V C CNN
|
||||
F0 "RR" 50 600 50 H V C CNN
|
||||
F1 "RR9" 30 0 50 V V C CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
|
|
|
@ -197,6 +197,8 @@ set( EESCHEMA_COMMON_SRCS
|
|||
if( MINGW )
|
||||
# EESCHEMA_RESOURCES variable is set by the macro.
|
||||
mingw_resource_compiler( eeschema )
|
||||
else()
|
||||
set( EESCHEMA_RESOURCES eeschema.rc )
|
||||
endif()
|
||||
|
||||
# Create a C++ compilable string initializer containing html text into a *.h file:
|
||||
|
|
|
@ -197,6 +197,14 @@ void SCH_EDIT_FRAME::KiwayMailIn( KIWAY_EXPRESS& mail )
|
|||
ExecuteRemoteCommand( payload.c_str() );
|
||||
break;
|
||||
|
||||
case MAIL_SCH_PCB_UPDATE_REQUEST:
|
||||
{
|
||||
wxCommandEvent dummy;
|
||||
|
||||
OnUpdatePCB( dummy );
|
||||
break;
|
||||
}
|
||||
|
||||
case MAIL_BACKANNOTATE_FOOTPRINTS:
|
||||
try
|
||||
{
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Dec 28 2015)
|
||||
// C++ code generated with wxFormBuilder (version Jan 1 2016)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
|
@ -91,7 +91,7 @@ DIALOG_SCH_FIND_BASE::DIALOG_SCH_FIND_BASE( wxWindow* parent, wxWindowID id, con
|
|||
m_checkAllPins = new wxCheckBox( this, wxID_ANY, _("Search all pin &names and numbers"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
leftSizer->Add( m_checkAllPins, 0, wxBOTTOM|wxRIGHT|wxLEFT, 6 );
|
||||
|
||||
m_checkCurrentSheetOnly = new wxCheckBox( this, wxID_ANY, _("Search the current &sheet onl&y"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_checkCurrentSheetOnly = new wxCheckBox( this, wxID_ANY, _("Search the current &sheet only"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
leftSizer->Add( m_checkCurrentSheetOnly, 0, wxBOTTOM|wxLEFT|wxRIGHT, 6 );
|
||||
|
||||
m_checkReplaceReferences = new wxCheckBox( this, wxID_ANY, _("Replace componen&t reference designators"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
|
|
@ -1299,7 +1299,7 @@
|
|||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Search the current &sheet onl&y</property>
|
||||
<property name="label">Search the current &sheet only</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Dec 28 2015)
|
||||
// C++ code generated with wxFormBuilder (version Jan 1 2016)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
|
|
|
@ -247,7 +247,10 @@ enum id_eeschema_frm
|
|||
ID_LIBVIEW_CMP_EXPORT_TO_SCHEMATIC,
|
||||
ID_SET_RELATIVE_OFFSET,
|
||||
|
||||
ID_END_EESCHEMA_ID_LIST
|
||||
ID_END_EESCHEMA_ID_LIST,
|
||||
|
||||
ID_UPDATE_PCB_FROM_SCH,
|
||||
ID_UPDATE_SCH_FROM_PCB
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -223,6 +223,8 @@ static EDA_HOTKEY HkLoadSchematic( _HKI( "Load Schematic" ), HK_LOAD_SCH, 'L' +
|
|||
static EDA_HOTKEY HkAutoplaceFields( _HKI( "Autoplace Fields" ), HK_AUTOPLACE_FIELDS, 'O',
|
||||
ID_AUTOPLACE_FIELDS );
|
||||
|
||||
static EDA_HOTKEY HkUpdatePcbFromSch( _HKI( "Update PCB from Schematics" ), HK_UPDATE_PCB_FROM_SCH, WXK_F8 );
|
||||
|
||||
// List of common hotkey descriptors
|
||||
static EDA_HOTKEY* common_Hotkey_List[] =
|
||||
{
|
||||
|
@ -295,8 +297,9 @@ static EDA_HOTKEY* schematic_Hotkey_List[] =
|
|||
&HkAddBusEntry,
|
||||
&HkAddGraphicPolyLine,
|
||||
&HkAddGraphicText,
|
||||
&HkLeaveSheet,
|
||||
&HkUpdatePcbFromSch,
|
||||
&HkAutoplaceFields,
|
||||
&HkLeaveSheet,
|
||||
&HkDeleteNode,
|
||||
NULL
|
||||
};
|
||||
|
|
|
@ -78,8 +78,9 @@ enum hotkey_id_commnand {
|
|||
HK_LEFT_CLICK,
|
||||
HK_LEFT_DCLICK,
|
||||
HK_LEAVE_SHEET,
|
||||
HK_DELETE_NODE,
|
||||
HK_AUTOPLACE_FIELDS,
|
||||
HK_DELETE_NODE
|
||||
HK_UPDATE_PCB_FROM_SCH
|
||||
};
|
||||
|
||||
// List of hotkey descriptors for Eeschema
|
||||
|
|
|
@ -427,6 +427,22 @@ void SCH_EDIT_FRAME::ReCreateMenuBar()
|
|||
// Menu Tools:
|
||||
wxMenu* toolsMenu = new wxMenu;
|
||||
|
||||
text = AddHotkeyName( _( "Update PCB from Schematics" ), g_Schematic_Hokeys_Descr, HK_UPDATE_PCB_FROM_SCH );
|
||||
|
||||
AddMenuItem( toolsMenu,
|
||||
ID_UPDATE_PCB_FROM_SCH,
|
||||
text, _( "Updates the PCB design with the current schematic (forward annotation)." ),
|
||||
KiBitmap( pcbnew_xpm ) );
|
||||
|
||||
// Run Pcbnew
|
||||
AddMenuItem( toolsMenu,
|
||||
ID_RUN_PCB,
|
||||
_( "&Open PCB Editor" ),
|
||||
_( "Run Pcbnew" ),
|
||||
KiBitmap( pcbnew_xpm ) );
|
||||
|
||||
toolsMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( toolsMenu,
|
||||
ID_RUN_LIBRARY,
|
||||
_( "Library &Editor" ), HELP_RUN_LIB_EDITOR,
|
||||
|
@ -474,17 +490,10 @@ void SCH_EDIT_FRAME::ReCreateMenuBar()
|
|||
// Run CvPcb
|
||||
AddMenuItem( toolsMenu,
|
||||
ID_RUN_CVPCB,
|
||||
_( "A&ssign Component Footprint" ),
|
||||
_( "A&ssign Component Footprints" ),
|
||||
_( "Run CvPcb" ),
|
||||
KiBitmap( cvpcb_xpm ) );
|
||||
|
||||
// Run Pcbnew
|
||||
AddMenuItem( toolsMenu,
|
||||
ID_RUN_PCB,
|
||||
_( "&Layout Printed Circuit Board" ),
|
||||
_( "Run Pcbnew" ),
|
||||
KiBitmap( pcbnew_xpm ) );
|
||||
|
||||
// Help Menu:
|
||||
wxMenu* helpMenu = new wxMenu;
|
||||
|
||||
|
|
|
@ -60,6 +60,9 @@
|
|||
#include <build_version.h>
|
||||
#include <wildcards_and_files_ext.h>
|
||||
|
||||
#include <netlist_exporter_kicad.h>
|
||||
#include <kiway.h>
|
||||
|
||||
|
||||
// non-member so it can be moved easily, and kept REALLY private.
|
||||
// Do NOT Clear() in here.
|
||||
|
@ -260,6 +263,7 @@ BEGIN_EVENT_TABLE( SCH_EDIT_FRAME, EDA_DRAW_FRAME )
|
|||
EVT_TOOL( wxID_PRINT, SCH_EDIT_FRAME::OnPrint )
|
||||
EVT_TOOL( ID_GET_ERC, SCH_EDIT_FRAME::OnErc )
|
||||
EVT_TOOL( ID_GET_NETLIST, SCH_EDIT_FRAME::OnCreateNetlist )
|
||||
EVT_TOOL( ID_UPDATE_PCB_FROM_SCH, SCH_EDIT_FRAME::OnUpdatePCB )
|
||||
EVT_TOOL( ID_GET_TOOLS, SCH_EDIT_FRAME::OnCreateBillOfMaterials )
|
||||
EVT_TOOL( ID_FIND_ITEMS, SCH_EDIT_FRAME::OnFindItems )
|
||||
EVT_TOOL( wxID_REPLACE, SCH_EDIT_FRAME::OnFindItems )
|
||||
|
@ -817,6 +821,50 @@ void SCH_EDIT_FRAME::OnErc( wxCommandEvent& event )
|
|||
InvokeDialogERC( this );
|
||||
}
|
||||
|
||||
void SCH_EDIT_FRAME::OnUpdatePCB( wxCommandEvent& event )
|
||||
{
|
||||
wxFileName fn = Prj().AbsolutePath( g_RootSheet->GetScreen()->GetFileName() );
|
||||
|
||||
fn.SetExt( PcbFileExtension );
|
||||
|
||||
if( Kiface().IsSingle() )
|
||||
{
|
||||
DisplayError( this, _( "Cannot update the PCB, because the Schematic Editor is"
|
||||
" opened in stand-alone mode. In order to create/update"
|
||||
" PCBs from schematics, you need to launch Kicad shell"
|
||||
" and create a PCB project." ) );
|
||||
return;
|
||||
} else {
|
||||
KIWAY_PLAYER* frame = Kiway().Player( FRAME_PCB, true );
|
||||
|
||||
// a pcb frame can be already existing, but not yet used.
|
||||
// this is the case when running the footprint editor, or the footprint viewer first
|
||||
// if the frame is not visible, the board is not yet loaded
|
||||
if( !frame->IsVisible() )
|
||||
{
|
||||
frame->OpenProjectFiles( std::vector<wxString>( 1, fn.GetFullPath() ) );
|
||||
frame->Show( true );
|
||||
}
|
||||
|
||||
// On Windows, Raise() does not bring the window on screen, when iconized
|
||||
if( frame->IsIconized() )
|
||||
frame->Iconize( false );
|
||||
|
||||
frame->Raise();
|
||||
}
|
||||
|
||||
NETLIST_OBJECT_LIST* net_atoms = BuildNetListBase();
|
||||
NETLIST_EXPORTER_KICAD exporter( net_atoms, Prj().SchLibs() );
|
||||
STRING_FORMATTER formatter;
|
||||
|
||||
exporter.Format( &formatter, GNL_ALL );
|
||||
|
||||
Kiway().ExpressMail( FRAME_PCB,
|
||||
MAIL_SCH_PCB_UPDATE,
|
||||
formatter.GetString(), // an abbreviated "kicad" (s-expr) netlist
|
||||
this
|
||||
);
|
||||
}
|
||||
|
||||
void SCH_EDIT_FRAME::OnCreateNetlist( wxCommandEvent& event )
|
||||
{
|
||||
|
|
|
@ -809,6 +809,7 @@ private:
|
|||
void OnAnnotate( wxCommandEvent& event );
|
||||
void OnErc( wxCommandEvent& event );
|
||||
void OnCreateNetlist( wxCommandEvent& event );
|
||||
void OnUpdatePCB( wxCommandEvent& event );
|
||||
void OnCreateBillOfMaterials( wxCommandEvent& event );
|
||||
void OnFindItems( wxCommandEvent& event );
|
||||
void OnFindDialogClose( wxFindDialogEvent& event );
|
||||
|
|
|
@ -78,6 +78,8 @@ set( GERBVIEW_EXTRA_SRCS
|
|||
if( MINGW )
|
||||
# GERBVIEW_RESOURCES variable is set by the macro.
|
||||
mingw_resource_compiler( gerbview )
|
||||
else()
|
||||
set( GERBVIEW_RESOURCES gerbview.rc )
|
||||
endif()
|
||||
|
||||
if( APPLE )
|
||||
|
|
|
@ -60,6 +60,7 @@ enum KICAD_T
|
|||
PCB_TARGET_T, ///< class PCB_TARGET, a target (graphic item)
|
||||
PCB_ZONE_AREA_T, ///< class ZONE_CONTAINER, a zone area
|
||||
PCB_ITEM_LIST_T, ///< class BOARD_ITEM_LIST, a list of board items
|
||||
PCB_NETINFO_T, ///< class NETINFO_ITEM, a description of a net
|
||||
|
||||
// Schematic draw Items. The order of these items effects the sort order.
|
||||
// It is currently ordered to mimic the old Eeschema locate behavior where
|
||||
|
|
|
@ -39,6 +39,9 @@ enum MAIL_T
|
|||
MAIL_CROSS_PROBE, ///< PCB<->SCH, CVPCB->SCH cross-probing.
|
||||
MAIL_BACKANNOTATE_FOOTPRINTS, ///< CVPCB->SCH footprint stuffing at cvpcb termination
|
||||
MAIL_EESCHEMA_NETLIST, ///< EESCHEMA->CVPCB netlist immediately after launching CVPCB
|
||||
MAIL_SCH_PCB_UPDATE, ///< Sch->PCB forward update
|
||||
MAIL_SCH_PCB_UPDATE_REQUEST ///< Sch->PCB forward update, requests SCH to re-generate netlist and send it to PCB via another mail (kind of bootstrap)
|
||||
|
||||
};
|
||||
|
||||
#endif // MAIL_TYPE_H_
|
||||
|
|
|
@ -89,17 +89,6 @@ class PCB_EDIT_FRAME : public PCB_BASE_EDIT_FRAME
|
|||
/// The auxiliary right vertical tool bar used to access the microwave tools.
|
||||
wxAuiToolBar* m_microWaveToolBar;
|
||||
|
||||
/**
|
||||
* Function loadFootprints
|
||||
* loads the footprints for each #COMPONENT in \a aNetlist from the list of libraries.
|
||||
*
|
||||
* @param aNetlist is the netlist of components to load the footprints into.
|
||||
* @param aReporter is the #REPORTER object to report to.
|
||||
* @throw IO_ERROR if an I/O error occurs or a #PARSE_ERROR if a file parsing error
|
||||
* occurs while reading footprint library files.
|
||||
*/
|
||||
void loadFootprints( NETLIST& aNetlist, REPORTER* aReporter )
|
||||
throw( IO_ERROR, PARSE_ERROR );
|
||||
|
||||
protected:
|
||||
PCB_LAYER_WIDGET* m_Layers;
|
||||
|
@ -225,6 +214,18 @@ public:
|
|||
|
||||
virtual ~PCB_EDIT_FRAME();
|
||||
|
||||
/**
|
||||
* Function loadFootprints
|
||||
* loads the footprints for each #COMPONENT in \a aNetlist from the list of libraries.
|
||||
*
|
||||
* @param aNetlist is the netlist of components to load the footprints into.
|
||||
* @param aReporter is the #REPORTER object to report to.
|
||||
* @throw IO_ERROR if an I/O error occurs or a #PARSE_ERROR if a file parsing error
|
||||
* occurs while reading footprint library files.
|
||||
*/
|
||||
void LoadFootprints( NETLIST& aNetlist, REPORTER* aReporter )
|
||||
throw( IO_ERROR, PARSE_ERROR );
|
||||
|
||||
void OnQuit( wxCommandEvent& event );
|
||||
|
||||
/**
|
||||
|
@ -280,6 +281,7 @@ public:
|
|||
void OnUpdateMuWaveToolbar( wxUpdateUIEvent& aEvent );
|
||||
void OnLayerColorChange( wxCommandEvent& aEvent );
|
||||
void OnConfigurePaths( wxCommandEvent& aEvent );
|
||||
void OnUpdatePCBFromSch( wxCommandEvent& event );
|
||||
|
||||
/**
|
||||
* called when the alt key is pressed during a mouse wheel action
|
||||
|
|
|
@ -25,6 +25,8 @@ set( KICAD_SRCS
|
|||
if( MINGW )
|
||||
# KICAD_RESOURCES variable is set by the macro.
|
||||
mingw_resource_compiler( kicad )
|
||||
else()
|
||||
set( KICAD_RESOURCES kicad.rc )
|
||||
endif()
|
||||
|
||||
if( APPLE )
|
||||
|
|
|
@ -50,6 +50,8 @@ set( PL_EDITOR_EXTRA_SRCS
|
|||
if( MINGW )
|
||||
# PL_EDITOR_RESOURCES variable is set by the macro.
|
||||
mingw_resource_compiler( pl_editor )
|
||||
else()
|
||||
set( PL_EDITOR_RESOURCES pl_editor.rc )
|
||||
endif()
|
||||
|
||||
|
||||
|
|
|
@ -237,8 +237,9 @@ void WORKSHEET_LAYOUT_IO::format( WORKSHEET_DATAITEM_TEXT* aItem, int aNestLevel
|
|||
m_out->Print( 0, " (%s %s)", getTokenName( T_rotate ),
|
||||
double2Str(aItem->m_Orient ).c_str() );
|
||||
|
||||
// Write font info
|
||||
bool write_size = aItem->m_TextSize.x != 0.0 && aItem->m_TextSize.y != 0.0;
|
||||
// Write font info, only if it is not the default setup
|
||||
bool write_size = aItem->m_TextSize.x != 0.0 || aItem->m_TextSize.y != 0.0;
|
||||
|
||||
if( write_size || aItem->IsBold() || aItem->IsItalic() )
|
||||
{
|
||||
m_out->Print( 0, " (%s", getTokenName( T_font ) );
|
||||
|
|
|
@ -40,6 +40,8 @@ set( PCB_CALCULATOR_SRCS
|
|||
if( MINGW )
|
||||
# PCB_CALCULATOR_RESOURCES variable is set by the macro.
|
||||
mingw_resource_compiler( pcb_calculator )
|
||||
else()
|
||||
set( PCB_CALCULATOR_RESOURCES pcb_calculator.rc )
|
||||
endif()
|
||||
|
||||
if( APPLE )
|
||||
|
|
|
@ -145,6 +145,8 @@ set( PCBNEW_DIALOGS
|
|||
dialogs/dialog_track_via_properties_base.cpp
|
||||
dialogs/dialog_track_via_size.cpp
|
||||
dialogs/dialog_track_via_size_base.cpp
|
||||
dialogs/dialog_update_pcb_base.cpp
|
||||
dialogs/dialog_update_pcb.cpp
|
||||
footprint_wizard.cpp
|
||||
footprint_wizard_frame.cpp
|
||||
dialogs/dialog_footprint_wizard_list_base.cpp
|
||||
|
@ -193,6 +195,7 @@ set( PCBNEW_CLASS_SRCS
|
|||
attribut.cpp
|
||||
board_items_to_polygon_shape_transform.cpp
|
||||
board_undo_redo.cpp
|
||||
board_netlist_updater.cpp
|
||||
block.cpp
|
||||
block_module_editor.cpp
|
||||
build_BOM_from_board.cpp
|
||||
|
@ -499,6 +502,8 @@ endif()
|
|||
if( MINGW )
|
||||
# PCBNEW_RESOURCES variable is set by the macro.
|
||||
mingw_resource_compiler( pcbnew )
|
||||
else()
|
||||
set( PCBNEW_RESOURCES pcbnew.rc )
|
||||
endif()
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,715 @@
|
|||
/**
|
||||
* @file board_netlist_updater.h
|
||||
* @brief BOARD_NETLIST_UPDATER class definition
|
||||
*/
|
||||
|
||||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||
* Copyright (C) 2015 CERN
|
||||
* Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net>
|
||||
*
|
||||
* Copyright (C) 1992-2015 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 2
|
||||
* 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, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
|
||||
#include <common.h> // for PAGE_INFO
|
||||
|
||||
#include <class_board.h>
|
||||
#include <class_netinfo.h>
|
||||
#include <class_module.h>
|
||||
#include <class_pad.h>
|
||||
#include <class_zone.h>
|
||||
|
||||
#include <pcb_netlist.h>
|
||||
#include <ratsnest_data.h>
|
||||
#include <reporter.h>
|
||||
|
||||
#include <board_netlist_updater.h>
|
||||
|
||||
#include <wxPcbStruct.h>
|
||||
|
||||
|
||||
BOARD_NETLIST_UPDATER::BOARD_NETLIST_UPDATER ( PCB_EDIT_FRAME *aFrame, BOARD *aBoard ) :
|
||||
m_frame ( aFrame ),
|
||||
m_board( aBoard )
|
||||
{
|
||||
m_reporter = &NULL_REPORTER::GetInstance();
|
||||
m_undoList = new PICKED_ITEMS_LIST;
|
||||
}
|
||||
|
||||
BOARD_NETLIST_UPDATER::~BOARD_NETLIST_UPDATER ()
|
||||
{
|
||||
delete m_undoList;
|
||||
}
|
||||
|
||||
void BOARD_NETLIST_UPDATER::pushUndo( BOARD_ITEM* aItem, UNDO_REDO_T aCommandType, BOARD_ITEM* aCopy )
|
||||
{
|
||||
ITEM_PICKER picker( aItem, aCommandType );
|
||||
|
||||
if( aCommandType == UR_CHANGED )
|
||||
{
|
||||
if( m_undoList->FindItem ( aItem ) >= 0 ) // add only once
|
||||
return;
|
||||
|
||||
picker.SetLink( aCopy ? aCopy : aItem->Clone() );
|
||||
}
|
||||
|
||||
m_undoList->PushItem( picker );
|
||||
}
|
||||
|
||||
wxPoint BOARD_NETLIST_UPDATER::estimateComponentInsertionPosition()
|
||||
{
|
||||
wxPoint bestPosition;
|
||||
|
||||
if( !m_board->IsEmpty() )
|
||||
{
|
||||
// Position new components below any existing board features.
|
||||
EDA_RECT bbox = m_board->ComputeBoundingBox( true );
|
||||
|
||||
if( bbox.GetWidth() || bbox.GetHeight() )
|
||||
{
|
||||
bestPosition.x = bbox.Centre().x;
|
||||
bestPosition.y = bbox.GetBottom() + Millimeter2iu( 10 );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Position new components in the center of the page when the board is empty.
|
||||
wxSize pageSize = m_board->GetPageSettings().GetSizeIU();
|
||||
|
||||
bestPosition.x = pageSize.GetWidth() / 2;
|
||||
bestPosition.y = pageSize.GetHeight() / 2;
|
||||
}
|
||||
|
||||
return bestPosition;
|
||||
}
|
||||
|
||||
|
||||
MODULE* BOARD_NETLIST_UPDATER::addNewComponent( COMPONENT* aComponent )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
if( aComponent->GetModule() != NULL )
|
||||
{
|
||||
msg.Printf( _( "Adding new component \"%s:%s\" footprint \"%s\".\n" ),
|
||||
GetChars( aComponent->GetReference() ),
|
||||
GetChars( aComponent->GetTimeStamp() ),
|
||||
GetChars( aComponent->GetFPID().Format() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_INFO );
|
||||
|
||||
msg.Printf( _( "Add component %s, footprint: %s.\n" ),
|
||||
GetChars( aComponent->GetReference() ),
|
||||
GetChars( aComponent->GetFPID().Format() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
|
||||
|
||||
if( !m_isDryRun )
|
||||
{
|
||||
// Owned by NETLIST, can only copy it.
|
||||
MODULE *footprint = new MODULE( *aComponent->GetModule() );
|
||||
footprint->SetParent( m_board );
|
||||
footprint->SetPosition( estimateComponentInsertionPosition( ) );
|
||||
footprint->SetTimeStamp( GetNewTimeStamp() );
|
||||
|
||||
m_board->Add( footprint, ADD_APPEND );
|
||||
m_addedComponents.push_back( footprint );
|
||||
|
||||
pushUndo( footprint, UR_NEW );
|
||||
|
||||
return footprint;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
msg.Printf( _( "Cannot add component %s due to missing footprint %s.\n" ),
|
||||
GetChars( aComponent->GetReference() ),
|
||||
GetChars( aComponent->GetFPID().Format() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_ERROR );
|
||||
|
||||
msg.Printf( _( "Cannot add new component \"%s:%s\" due to missing "
|
||||
"footprint \"%s\".\n" ),
|
||||
GetChars( aComponent->GetReference() ),
|
||||
GetChars( aComponent->GetTimeStamp() ),
|
||||
GetChars( aComponent->GetFPID().Format() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_INFO );
|
||||
|
||||
m_errorCount ++;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
MODULE* BOARD_NETLIST_UPDATER::replaceComponent( NETLIST& aNetlist, MODULE *aPcbComponent, COMPONENT* aNewComponent )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
if( !m_replaceFootprints )
|
||||
return NULL;
|
||||
|
||||
// Test if the footprint has not changed
|
||||
if( aNewComponent->GetFPID().empty() ||
|
||||
aPcbComponent->GetFPID() == aNewComponent->GetFPID() )
|
||||
return NULL;
|
||||
|
||||
if( aNewComponent->GetModule() != NULL )
|
||||
{
|
||||
msg.Printf( _( "Change component %s footprint from %s to %s.\n"),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( aPcbComponent->GetFPID().Format() ),
|
||||
GetChars( aNewComponent->GetFPID().Format() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
|
||||
msg.Printf( _( "Replacing component \"%s:%s\" footprint \"%s\" with "
|
||||
"\"%s\".\n" ),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( aPcbComponent->GetPath() ),
|
||||
GetChars( aPcbComponent->GetFPID().Format() ),
|
||||
GetChars( aNewComponent->GetFPID().Format() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_INFO );
|
||||
|
||||
if( !m_isDryRun )
|
||||
{
|
||||
wxASSERT( aPcbComponent != NULL );
|
||||
MODULE* newFootprint = new MODULE( *aNewComponent->GetModule() );
|
||||
|
||||
if( aNetlist.IsFindByTimeStamp() )
|
||||
newFootprint->SetReference( aPcbComponent->GetReference() );
|
||||
else
|
||||
newFootprint->SetPath( aPcbComponent->GetPath() );
|
||||
|
||||
aPcbComponent->CopyNetlistSettings( newFootprint, false );
|
||||
m_board->Remove( aPcbComponent );
|
||||
m_board->Add( newFootprint, ADD_APPEND );
|
||||
|
||||
pushUndo( aPcbComponent, UR_DELETED );
|
||||
pushUndo( newFootprint, UR_NEW );
|
||||
|
||||
return newFootprint;
|
||||
}
|
||||
} else {
|
||||
|
||||
msg.Printf( _( "Cannot change component %s footprint due to missing "
|
||||
"footprint %s.\n" ),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( aNewComponent->GetFPID().Format() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_ERROR );
|
||||
|
||||
msg.Printf( _( "Cannot replace component \"%s:%s\" due to missing "
|
||||
"footprint \"%s\".\n" ),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( aPcbComponent->GetPath() ),
|
||||
GetChars( aNewComponent->GetFPID().Format() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_INFO );
|
||||
|
||||
m_errorCount ++;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool BOARD_NETLIST_UPDATER::updateComponentParameters( MODULE *aPcbComponent, COMPONENT* aNewComponent )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
if( !aPcbComponent )
|
||||
return false;
|
||||
|
||||
bool changed = false;
|
||||
MODULE* copy = (MODULE*) aPcbComponent->Clone();
|
||||
|
||||
// Test for reference designator field change.
|
||||
if( aPcbComponent->GetReference() != aNewComponent->GetReference() )
|
||||
{
|
||||
msg.Printf( _( "Change component %s reference to %s.\n" ),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( aNewComponent->GetReference() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
|
||||
msg.Printf( _( "Changing component \"%s:%s\" reference to \"%s\".\n" ),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( aPcbComponent->GetPath() ),
|
||||
GetChars( aNewComponent->GetReference() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_INFO );
|
||||
|
||||
if ( !m_isDryRun )
|
||||
{
|
||||
changed = true;
|
||||
aPcbComponent->SetReference( aNewComponent->GetReference() );
|
||||
}
|
||||
}
|
||||
|
||||
// Test for value field change.
|
||||
if( aPcbComponent->GetValue() != aNewComponent->GetValue() )
|
||||
{
|
||||
msg.Printf( _( "Change component %s value from %s to %s.\n" ),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( aPcbComponent->GetValue() ),
|
||||
GetChars( aNewComponent->GetValue() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
|
||||
msg.Printf( _( "Changing component \"%s:%s\" value from \"%s\" to \"%s\".\n" ),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( aPcbComponent->GetPath() ),
|
||||
GetChars( aPcbComponent->GetValue() ),
|
||||
GetChars( aNewComponent->GetValue() ) );
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
|
||||
if ( !m_isDryRun )
|
||||
{
|
||||
changed = true;
|
||||
aPcbComponent->SetValue( aNewComponent->GetValue() );
|
||||
}
|
||||
}
|
||||
|
||||
// Test for time stamp change.
|
||||
if( aPcbComponent->GetPath() != aNewComponent->GetTimeStamp() )
|
||||
{
|
||||
msg.Printf( _( "Changing component path \"%s:%s\" to \"%s\".\n" ),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( aPcbComponent->GetPath() ),
|
||||
GetChars( aNewComponent->GetTimeStamp() ) );
|
||||
m_reporter->Report( msg, REPORTER::RPT_INFO );
|
||||
|
||||
if ( !m_isDryRun )
|
||||
{
|
||||
changed = true;
|
||||
aPcbComponent->SetPath( aNewComponent->GetTimeStamp() );
|
||||
}
|
||||
}
|
||||
|
||||
if( changed )
|
||||
pushUndo( aPcbComponent, UR_CHANGED, copy );
|
||||
else
|
||||
delete copy;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BOARD_NETLIST_UPDATER::updateComponentPadConnections( MODULE *aPcbComponent, COMPONENT* aNewComponent )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
bool changed = false;
|
||||
MODULE* copy = (MODULE*) aPcbComponent->Clone();
|
||||
|
||||
// At this point, the component footprint is updated. Now update the nets.
|
||||
for( D_PAD *pad = aPcbComponent->Pads(); pad; pad = pad->Next() )
|
||||
{
|
||||
COMPONENT_NET net = aNewComponent->GetNet( pad->GetPadName() );
|
||||
|
||||
if( !net.IsValid() ) // New footprint pad has no net.
|
||||
{
|
||||
if( !pad->GetNetname().IsEmpty() )
|
||||
{
|
||||
msg.Printf( _( "Disconnect component %s pin %s.\n" ),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( pad->GetPadName() ) );
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
|
||||
msg.Printf( _( "Clearing component \"%s:%s\" pin \"%s\" net name.\n" ),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( aPcbComponent->GetPath() ),
|
||||
GetChars( pad->GetPadName() ) );
|
||||
m_reporter->Report( msg, REPORTER::RPT_INFO );
|
||||
|
||||
}
|
||||
|
||||
if( !m_isDryRun )
|
||||
{
|
||||
changed = true;
|
||||
pad->SetNetCode( NETINFO_LIST::UNCONNECTED );
|
||||
}
|
||||
}
|
||||
else // New footprint pad has a net.
|
||||
{
|
||||
if( net.GetNetName() != pad->GetNetname() )
|
||||
{
|
||||
NETINFO_ITEM* netinfo = m_board->FindNet( net.GetNetName() );
|
||||
|
||||
if( netinfo == NULL )
|
||||
{
|
||||
// It is a new net, we have to add it
|
||||
if( !m_isDryRun )
|
||||
{
|
||||
changed = true;
|
||||
netinfo = new NETINFO_ITEM( m_board, net.GetNetName() );
|
||||
m_board->AppendNet( netinfo );
|
||||
pushUndo( netinfo, UR_NEW );
|
||||
}
|
||||
|
||||
msg.Printf( _( "Add net %s.\n" ),
|
||||
GetChars( net.GetNetName() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
}
|
||||
|
||||
if( pad->GetNetname() != wxString("") )
|
||||
{
|
||||
msg.Printf( _( "Reconnect component %s pin %s from net %s to net %s.\n"),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( pad->GetPadName() ),
|
||||
GetChars( pad->GetNetname() ),
|
||||
GetChars( net.GetNetName() ) );
|
||||
|
||||
} else {
|
||||
msg.Printf( _( "Connect component %s pin %s to net %s.\n"),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( pad->GetPadName() ),
|
||||
GetChars( net.GetNetName() ) );
|
||||
}
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
|
||||
msg.Printf( _( "Changing component \"%s:%s\" pin \"%s\" net name from "
|
||||
"\"%s\" to \"%s\".\n" ),
|
||||
GetChars( aPcbComponent->GetReference() ),
|
||||
GetChars( aPcbComponent->GetPath() ),
|
||||
GetChars( pad->GetPadName() ),
|
||||
GetChars( pad->GetNetname() ),
|
||||
GetChars( net.GetNetName() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_INFO );
|
||||
|
||||
if ( !m_isDryRun )
|
||||
{
|
||||
changed = true;
|
||||
pad->SetNetCode( netinfo->GetNet() );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( changed )
|
||||
pushUndo( aPcbComponent, UR_CHANGED, copy );
|
||||
else
|
||||
delete copy;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BOARD_NETLIST_UPDATER::deleteUnusedComponents( NETLIST& aNetlist )
|
||||
{
|
||||
wxString msg;
|
||||
MODULE* nextModule;
|
||||
const COMPONENT* component;
|
||||
|
||||
for( MODULE* module = m_board->m_Modules; module != NULL; module = nextModule )
|
||||
{
|
||||
nextModule = module->Next();
|
||||
|
||||
if( module->IsLocked() )
|
||||
continue;
|
||||
|
||||
if( m_lookupByTimestamp )
|
||||
component = aNetlist.GetComponentByTimeStamp( module->GetPath() );
|
||||
else
|
||||
component = aNetlist.GetComponentByReference( module->GetReference() );
|
||||
|
||||
if( component == NULL )
|
||||
{
|
||||
msg.Printf( _( "Remove component %s." ),
|
||||
GetChars( module->GetReference() ) );
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
|
||||
msg.Printf( _( "Removing unused component \"%s:%s\".\n" ),
|
||||
GetChars( module->GetReference() ),
|
||||
GetChars( module->GetPath() ) );
|
||||
m_reporter->Report( msg, REPORTER::RPT_INFO );
|
||||
|
||||
if( !m_isDryRun )
|
||||
{
|
||||
pushUndo( module, UR_DELETED );
|
||||
m_board->Remove( module );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BOARD_NETLIST_UPDATER::deleteSinglePadNets()
|
||||
{
|
||||
int count = 0;
|
||||
wxString netname;
|
||||
wxString msg;
|
||||
D_PAD* pad = NULL;
|
||||
D_PAD* previouspad = NULL;
|
||||
|
||||
// We need the pad list, for next tests.
|
||||
// padlist is the list of pads, sorted by netname.
|
||||
|
||||
m_board->BuildListOfNets();
|
||||
|
||||
if( m_isDryRun )
|
||||
return false;
|
||||
|
||||
std::vector<D_PAD*> padlist = m_board->GetPads();
|
||||
|
||||
for( unsigned ii = 0; ii < padlist.size(); ii++ )
|
||||
{
|
||||
pad = padlist[ii];
|
||||
|
||||
|
||||
if( pad->GetNetname().IsEmpty() )
|
||||
continue;
|
||||
|
||||
if( netname != pad->GetNetname() ) // End of net
|
||||
{
|
||||
if( previouspad && count == 1 )
|
||||
{
|
||||
// First, see if we have a copper zone attached to this pad.
|
||||
// If so, this is not really a single pad net
|
||||
|
||||
for( int ii = 0; ii < m_board->GetAreaCount(); ii++ )
|
||||
{
|
||||
ZONE_CONTAINER* zone = m_board->GetArea( ii );
|
||||
|
||||
if( !zone->IsOnCopperLayer() )
|
||||
continue;
|
||||
|
||||
if( zone->GetIsKeepout() )
|
||||
continue;
|
||||
|
||||
if( zone->GetNet() == previouspad->GetNet() )
|
||||
{
|
||||
count++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( count == 1 ) // Really one pad, and nothing else
|
||||
{
|
||||
msg.Printf( _( "Remove single pad net %s." ),
|
||||
GetChars( previouspad->GetNetname() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
|
||||
msg.Printf( _( "Remove single pad net \"%s\" on \"%s\" pad '%s'\n" ),
|
||||
GetChars( previouspad->GetNetname() ),
|
||||
GetChars( previouspad->GetParent()->GetReference() ),
|
||||
GetChars( previouspad->GetPadName() ) );
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
|
||||
//pushUndo( previouspad, UR_CHANGED );
|
||||
previouspad->SetNetCode( NETINFO_LIST::UNCONNECTED );
|
||||
}
|
||||
}
|
||||
|
||||
netname = pad->GetNetname();
|
||||
count = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
count++;
|
||||
}
|
||||
|
||||
previouspad = pad;
|
||||
}
|
||||
|
||||
// Examine last pad
|
||||
if( pad && count == 1 )
|
||||
{
|
||||
//pushUndo( pad, UR_CHANGED );
|
||||
pad->SetNetCode( NETINFO_LIST::UNCONNECTED );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BOARD_NETLIST_UPDATER::testConnectivity( NETLIST& aNetlist )
|
||||
{
|
||||
// Last step: Some tests:
|
||||
// verify all pads found in netlist:
|
||||
// They should exist in footprints, otherwise the footprint is wrong
|
||||
// note also references or time stamps are updated, so we use only
|
||||
// the reference to find a footprint
|
||||
//
|
||||
// Also verify if zones have acceptable nets, i.e. nets with pads.
|
||||
// Zone with no pad belongs to a "dead" net which happens after changes in schematic
|
||||
// when no more pad use this net name.
|
||||
|
||||
wxString msg;
|
||||
wxString padname;
|
||||
|
||||
for( int i = 0; i < (int) aNetlist.GetCount(); i++ )
|
||||
{
|
||||
const COMPONENT* component = aNetlist.GetComponent( i );
|
||||
MODULE* footprint = m_board->FindModuleByReference( component->GetReference() );
|
||||
|
||||
if( footprint == NULL ) // It can be missing in partial designs
|
||||
continue;
|
||||
|
||||
// Explore all pins/pads in component
|
||||
for( unsigned jj = 0; jj < component->GetNetCount(); jj++ )
|
||||
{
|
||||
COMPONENT_NET net = component->GetNet( jj );
|
||||
padname = net.GetPinName();
|
||||
|
||||
if( footprint->FindPadByName( padname ) )
|
||||
continue; // OK, pad found
|
||||
|
||||
// not found: bad footprint, report error
|
||||
msg.Printf( _( "Component %s pad %s not found in footprint %s\n" ),
|
||||
GetChars( component->GetReference() ),
|
||||
GetChars( padname ),
|
||||
GetChars( footprint->GetFPID().Format() ) );
|
||||
m_reporter->Report( msg, REPORTER::RPT_ERROR );
|
||||
m_errorCount ++;
|
||||
}
|
||||
}
|
||||
|
||||
// Test copper zones to detect "dead" nets (nets without any pad):
|
||||
for( int i = 0; i < m_board->GetAreaCount(); i++ )
|
||||
{
|
||||
ZONE_CONTAINER* zone = m_board->GetArea( i );
|
||||
|
||||
if( !zone->IsOnCopperLayer() || zone->GetIsKeepout() )
|
||||
continue;
|
||||
|
||||
int nc = zone->GetNet()->GetNodesCount();
|
||||
|
||||
if( nc == 0 )
|
||||
{
|
||||
msg.Printf( _( "Copper zone (net name %s): net has no pads connected." ),
|
||||
GetChars( zone->GetNet()->GetNetname() ) );
|
||||
m_reporter->Report( msg, REPORTER::RPT_WARNING );
|
||||
m_warningCount ++;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BOARD_NETLIST_UPDATER::UpdateNetlist( NETLIST& aNetlist )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
m_errorCount = 0;
|
||||
m_warningCount = 0;
|
||||
|
||||
if( !m_isDryRun )
|
||||
{
|
||||
m_board->SetStatus( 0 );
|
||||
}
|
||||
|
||||
|
||||
for( int i = 0; i < (int) aNetlist.GetCount(); i++ )
|
||||
{
|
||||
COMPONENT* component = aNetlist.GetComponent( i );
|
||||
MODULE *footprint = NULL;
|
||||
|
||||
msg.Printf( _( "Processing component \"%s:%s:%s\".\n" ),
|
||||
GetChars( component->GetReference() ),
|
||||
GetChars( component->GetTimeStamp() ),
|
||||
GetChars( component->GetFPID().Format() ) );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_INFO );
|
||||
|
||||
if( aNetlist.IsFindByTimeStamp() )
|
||||
footprint = m_board->FindModule( component->GetTimeStamp(), true );
|
||||
else
|
||||
footprint = m_board->FindModule( component->GetReference() );
|
||||
|
||||
if( footprint ) // An existing footprint.
|
||||
{
|
||||
MODULE *newFootprint = replaceComponent ( aNetlist, footprint, component );
|
||||
if ( newFootprint )
|
||||
footprint = newFootprint;
|
||||
}
|
||||
else
|
||||
{
|
||||
footprint = addNewComponent( component );
|
||||
}
|
||||
|
||||
if( footprint )
|
||||
{
|
||||
updateComponentParameters( footprint, component );
|
||||
updateComponentPadConnections( footprint, component );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//aNetlist.GetDeleteExtraFootprints()
|
||||
|
||||
if( m_deleteUnusedComponents )
|
||||
deleteUnusedComponents( aNetlist );
|
||||
|
||||
if( m_deleteSinglePadNets )
|
||||
deleteSinglePadNets();
|
||||
|
||||
if ( !m_isDryRun )
|
||||
{
|
||||
m_frame->SaveCopyInUndoList( *m_undoList, UR_UNSPECIFIED, wxPoint(0, 0) );
|
||||
m_frame->OnModify();
|
||||
|
||||
m_frame->Compile_Ratsnest( NULL, true );
|
||||
m_board->GetRatsnest()->ProcessBoard();
|
||||
|
||||
testConnectivity( aNetlist );
|
||||
}
|
||||
|
||||
// Update the ratsnest
|
||||
|
||||
m_reporter->Report( wxT(""), REPORTER::RPT_ACTION );
|
||||
m_reporter->Report( wxT(""), REPORTER::RPT_ACTION );
|
||||
|
||||
msg.Printf( _( "Total warnings: %d, errors: %d." ),
|
||||
m_warningCount, m_errorCount );
|
||||
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
|
||||
|
||||
if ( m_errorCount )
|
||||
{
|
||||
|
||||
m_reporter->Report( _("Errors occured during the netlist update. Unless you "
|
||||
"fix them, your board will not be consistent with the schematics." ),
|
||||
REPORTER::RPT_ERROR );
|
||||
|
||||
return false;
|
||||
} else {
|
||||
m_reporter->Report( _("Netlist update successful!" ),
|
||||
REPORTER::RPT_ACTION );
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BOARD_NETLIST_UPDATER::UpdateNetlist( const wxString& aNetlistFileName,
|
||||
const wxString& aCmpFileName )
|
||||
{
|
||||
return false;
|
||||
}
|
|
@ -0,0 +1,165 @@
|
|||
/**
|
||||
* @file board_netlist_updater.h
|
||||
* @brief BOARD_NETLIST_UPDATER class definition
|
||||
*/
|
||||
|
||||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||
* Copyright (C) 2015 CERN
|
||||
* Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net>
|
||||
*
|
||||
* Copyright (C) 1992-2015 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 2
|
||||
* 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, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef __BOARD_NETLIST_UPDATER_H
|
||||
#define __BOARD_NETLIST_UPDATER_H
|
||||
|
||||
class BOARD;
|
||||
class REPORTER;
|
||||
class NETLIST;
|
||||
class COMPONENT;
|
||||
class MODULE;
|
||||
class PICKED_ITEMS_LIST;
|
||||
class PCB_EDIT_FRAME;
|
||||
|
||||
#include <class_undoredo_container.h>
|
||||
|
||||
/**
|
||||
* Class BOARD_NETLIST_UPDATER
|
||||
* updates the #BOARD with a new netlist.
|
||||
*
|
||||
* The changes are made to the board are as follows they are not disabled in the status
|
||||
* settings in the #NETLIST:
|
||||
* - If a new component is found in the #NETLIST and not in the #BOARD, it is added
|
||||
* to the #BOARD.
|
||||
* - If a the component in the #NETLIST is already on the #BOARD, then one or more of the
|
||||
* following actions can occur:
|
||||
* + If the footprint name in the #NETLIST does not match the footprint name on the
|
||||
* #BOARD, the footprint on the #BOARD is replaced with the footprint specified in
|
||||
* the #NETLIST and the proper parameters are copied from the existing footprint.
|
||||
* + If the reference designator in the #NETLIST does not match the reference designator
|
||||
* on the #BOARD, the reference designator is updated from the #NETLIST.
|
||||
* + If the value field in the #NETLIST does not match the value field on the #BOARD,
|
||||
* the value field is updated from the #NETLIST.
|
||||
* + If the time stamp in the #NETLIST does not match the time stamp on the #BOARD,
|
||||
* the time stamp is updated from the #NETLIST.
|
||||
* - After each footprint is added or update as described above, each footprint pad net
|
||||
* name is compared and updated to the value defined in the #NETLIST.
|
||||
* - After all of the footprints have been added, updated, and net names properly set,
|
||||
* any extra unlock footprints are removed from the #BOARD.
|
||||
*
|
||||
*/
|
||||
class BOARD_NETLIST_UPDATER
|
||||
{
|
||||
public:
|
||||
|
||||
BOARD_NETLIST_UPDATER( PCB_EDIT_FRAME *aFrame, BOARD *aBoard );
|
||||
~BOARD_NETLIST_UPDATER();
|
||||
|
||||
/**
|
||||
* Function UpdateNetlist()
|
||||
*
|
||||
* Updates the board's components according to the new netlist.
|
||||
* See BOARD_NETLIST_UPDATER class description for the details of the process.
|
||||
* @param aNetlist the new netlist
|
||||
* @return true if process was completed successfully
|
||||
*/
|
||||
bool UpdateNetlist( NETLIST& aNetlist );
|
||||
|
||||
// @todo: implement and move NETLIST::ReadPcbNetlist here
|
||||
bool UpdateNetlist( const wxString& aNetlistFileName,
|
||||
const wxString& aCmpFileName );
|
||||
|
||||
|
||||
///> Sets the reporter object
|
||||
void SetReporter ( REPORTER *aReporter )
|
||||
{
|
||||
m_reporter = aReporter;
|
||||
}
|
||||
|
||||
///> Enables "delete single pad nets" option
|
||||
void SetDeleteSinglePadNets( bool aEnabled )
|
||||
{
|
||||
m_deleteSinglePadNets = aEnabled;
|
||||
}
|
||||
|
||||
///> Enables dry run mode (just report, no changes to PCB)
|
||||
void SetIsDryRun ( bool aEnabled )
|
||||
{
|
||||
m_isDryRun = aEnabled;
|
||||
}
|
||||
|
||||
///> Enables replacing footprints with new ones
|
||||
void SetReplaceFootprints ( bool aEnabled )
|
||||
{
|
||||
m_replaceFootprints = aEnabled;
|
||||
}
|
||||
|
||||
///> Enables removing unused components
|
||||
void SetDeleteUnusedComponents ( bool aEnabled )
|
||||
{
|
||||
m_deleteUnusedComponents = aEnabled;
|
||||
}
|
||||
|
||||
///> Enables component lookup by timestamp instead of reference
|
||||
void SetLookupByTimestamp ( bool aEnabled )
|
||||
{
|
||||
m_lookupByTimestamp = aEnabled;
|
||||
}
|
||||
|
||||
std::vector<MODULE*> GetAddedComponents() const
|
||||
{
|
||||
return m_addedComponents;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
void pushUndo( BOARD_ITEM* aItem, UNDO_REDO_T aCommandType, BOARD_ITEM* aCopy = NULL );
|
||||
|
||||
wxPoint estimateComponentInsertionPosition();
|
||||
MODULE* addNewComponent( COMPONENT* aComponent );
|
||||
MODULE* replaceComponent( NETLIST& aNetlist, MODULE *aPcbComponent, COMPONENT* aNewComponent );
|
||||
bool updateComponentParameters( MODULE *aPcbComponent, COMPONENT* aNewComponent );
|
||||
bool updateComponentPadConnections( MODULE *aPcbComponent, COMPONENT* aNewComponent );
|
||||
bool deleteUnusedComponents( NETLIST& aNetlist );
|
||||
bool deleteSinglePadNets();
|
||||
bool testConnectivity( NETLIST& aNetlist );
|
||||
|
||||
PICKED_ITEMS_LIST *m_undoList;
|
||||
PCB_EDIT_FRAME *m_frame;
|
||||
BOARD *m_board;
|
||||
REPORTER *m_reporter;
|
||||
|
||||
std::vector<MODULE*> m_addedComponents;
|
||||
|
||||
bool m_deleteSinglePadNets;
|
||||
bool m_deleteUnusedComponents;
|
||||
bool m_isDryRun;
|
||||
bool m_replaceFootprints;
|
||||
bool m_lookupByTimestamp;
|
||||
|
||||
int m_warningCount;
|
||||
int m_errorCount;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -116,6 +116,7 @@
|
|||
* @param aItem = item to find
|
||||
* = NULL to build the list of existing items
|
||||
*/
|
||||
|
||||
static bool TestForExistingItem( BOARD* aPcb, BOARD_ITEM* aItem )
|
||||
{
|
||||
static std::vector<BOARD_ITEM*> itemsList;
|
||||
|
@ -145,6 +146,10 @@ static bool TestForExistingItem( BOARD* aPcb, BOARD_ITEM* aItem )
|
|||
for( item = aPcb->m_Zone; item != NULL; item = item->Next() )
|
||||
icnt++;
|
||||
|
||||
NETINFO_LIST& netInfo = aPcb->GetNetInfo();
|
||||
|
||||
icnt += netInfo.GetNetCount();
|
||||
|
||||
// Build candidate list:
|
||||
itemsList.clear();
|
||||
itemsList.reserve(icnt);
|
||||
|
@ -170,6 +175,9 @@ static bool TestForExistingItem( BOARD* aPcb, BOARD_ITEM* aItem )
|
|||
for( item = aPcb->m_Zone; item != NULL; item = item->Next() )
|
||||
itemsList.push_back( item );
|
||||
|
||||
for( NETINFO_LIST::iterator i = netInfo.begin(); i != netInfo.end(); ++i )
|
||||
itemsList.push_back( *i );
|
||||
|
||||
// Sort list
|
||||
std::sort( itemsList.begin(), itemsList.end() );
|
||||
return false;
|
||||
|
@ -310,12 +318,11 @@ void PCB_EDIT_FRAME::SaveCopyInUndoList( BOARD_ITEM* aItem,
|
|||
if( aItem->Type() == PCB_MODULE_TEXT_T )
|
||||
{
|
||||
aItem = aItem->GetParent();
|
||||
wxASSERT( aItem->Type() == PCB_MODULE_T );
|
||||
aCommandType = UR_CHANGED;
|
||||
|
||||
if( aItem == NULL )
|
||||
return;
|
||||
|
||||
wxASSERT( aItem->Type() == PCB_MODULE_T );
|
||||
aCommandType = UR_CHANGED;
|
||||
}
|
||||
|
||||
PICKED_ITEMS_LIST* commandToUndo = new PICKED_ITEMS_LIST();
|
||||
|
@ -380,28 +387,47 @@ void PCB_EDIT_FRAME::SaveCopyInUndoList( const PICKED_ITEMS_LIST& aItemsList,
|
|||
|
||||
commandToUndo->m_TransformPoint = aTransformPoint;
|
||||
|
||||
// Copy picker list:
|
||||
commandToUndo->CopyList( aItemsList );
|
||||
// First, filter unnecessary stuff from the list (i.e. for multiple pads / labels modified),
|
||||
// take the first occurence of the module.
|
||||
|
||||
// Verify list, and creates data if needed
|
||||
for( unsigned ii = 0; ii < commandToUndo->GetCount(); ii++ )
|
||||
for( unsigned ii = 0; ii < aItemsList.GetCount(); ii++ )
|
||||
{
|
||||
BOARD_ITEM* item = (BOARD_ITEM*) commandToUndo->GetPickedItem( ii );
|
||||
ITEM_PICKER picker = aItemsList.GetItemWrapper(ii);
|
||||
BOARD_ITEM* item = (BOARD_ITEM*) aItemsList.GetPickedItem( ii );
|
||||
|
||||
// For texts belonging to modules, we need to save state of the parent module
|
||||
if( item->Type() == PCB_MODULE_TEXT_T || item->Type() == PCB_PAD_T )
|
||||
{
|
||||
item = item->GetParent();
|
||||
wxASSERT( item->Type() == PCB_MODULE_T );
|
||||
|
||||
if( item == NULL )
|
||||
continue;
|
||||
|
||||
wxASSERT( item->Type() == PCB_MODULE_T );
|
||||
bool found = false;
|
||||
|
||||
commandToUndo->SetPickedItem( item, ii );
|
||||
commandToUndo->SetPickedItemStatus( UR_CHANGED, ii );
|
||||
for( unsigned j = 0; j < commandToUndo->GetCount(); j++ )
|
||||
{
|
||||
if( commandToUndo->GetPickedItem( j ) == item && commandToUndo->GetPickedItemStatus( j ) == UR_CHANGED )
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( !found )
|
||||
commandToUndo->PushItem( ITEM_PICKER(item, UR_CHANGED ) );
|
||||
else
|
||||
continue;
|
||||
|
||||
} else {
|
||||
commandToUndo->PushItem( picker );
|
||||
}
|
||||
}
|
||||
|
||||
for( unsigned ii = 0; ii < commandToUndo->GetCount(); ii++ )
|
||||
{
|
||||
BOARD_ITEM* item = (BOARD_ITEM*) commandToUndo->GetPickedItem( ii );
|
||||
UNDO_REDO_T command = commandToUndo->GetPickedItemStatus( ii );
|
||||
|
||||
if( command == UR_UNSPECIFIED )
|
||||
|
@ -421,7 +447,10 @@ void PCB_EDIT_FRAME::SaveCopyInUndoList( const PICKED_ITEMS_LIST& aItemsList,
|
|||
* If this link is not null, the copy is already done
|
||||
*/
|
||||
if( commandToUndo->GetPickedItemLink( ii ) == NULL )
|
||||
commandToUndo->SetPickedItemLink( item->Clone(), ii );
|
||||
{
|
||||
EDA_ITEM* cloned = item->Clone();
|
||||
commandToUndo->SetPickedItemLink( cloned, ii );
|
||||
}
|
||||
break;
|
||||
|
||||
case UR_MOVED:
|
||||
|
@ -465,6 +494,8 @@ void PCB_EDIT_FRAME::PutDataInPreviousState( PICKED_ITEMS_LIST* aList, bool aRed
|
|||
BOARD_ITEM* item;
|
||||
bool not_found = false;
|
||||
bool reBuild_ratsnest = false;
|
||||
bool deep_reBuild_ratsnest = false;
|
||||
|
||||
KIGFX::VIEW* view = GetGalCanvas()->GetView();
|
||||
RN_DATA* ratsnest = GetBoard()->GetRatsnest();
|
||||
|
||||
|
@ -518,6 +549,11 @@ void PCB_EDIT_FRAME::PutDataInPreviousState( PICKED_ITEMS_LIST* aList, bool aRed
|
|||
reBuild_ratsnest = true;
|
||||
break;
|
||||
|
||||
case PCB_NETINFO_T:
|
||||
reBuild_ratsnest = true;
|
||||
deep_reBuild_ratsnest = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -564,8 +600,8 @@ void PCB_EDIT_FRAME::PutDataInPreviousState( PICKED_ITEMS_LIST* aList, bool aRed
|
|||
MODULE* module = static_cast<MODULE*>( item );
|
||||
module->RunOnChildren( boost::bind( &KIGFX::VIEW::Remove, view, _1 ) );
|
||||
}
|
||||
view->Remove( item );
|
||||
|
||||
view->Remove( item );
|
||||
item->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY );
|
||||
break;
|
||||
|
||||
|
@ -625,12 +661,18 @@ void PCB_EDIT_FRAME::PutDataInPreviousState( PICKED_ITEMS_LIST* aList, bool aRed
|
|||
wxMessageBox( wxT( "Incomplete undo/redo operation: some items not found" ) );
|
||||
|
||||
// Rebuild pointers and ratsnest that can be changed.
|
||||
if( reBuild_ratsnest && aRebuildRatsnet )
|
||||
if( reBuild_ratsnest )
|
||||
{
|
||||
Compile_Ratsnest( NULL, true );
|
||||
|
||||
if( IsGalCanvasActive() )
|
||||
ratsnest->Recalculate();
|
||||
else
|
||||
Compile_Ratsnest( NULL, true );
|
||||
{
|
||||
if( deep_reBuild_ratsnest )
|
||||
ratsnest->ProcessBoard();
|
||||
else
|
||||
ratsnest->Recalculate();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -649,7 +691,6 @@ void PCB_EDIT_FRAME::RestoreCopyFromUndoList( wxCommandEvent& aEvent )
|
|||
|
||||
/* Get the old list */
|
||||
PICKED_ITEMS_LIST* List = GetScreen()->PopCommandFromUndoList();
|
||||
|
||||
/* Undo the command */
|
||||
PutDataInPreviousState( List, false );
|
||||
|
||||
|
|
|
@ -672,6 +672,10 @@ void BOARD::Add( BOARD_ITEM* aBoardItem, int aControl )
|
|||
|
||||
switch( aBoardItem->Type() )
|
||||
{
|
||||
case PCB_NETINFO_T:
|
||||
aBoardItem->SetParent( this );
|
||||
m_NetInfo.AppendNet( (NETINFO_ITEM*) aBoardItem );
|
||||
|
||||
// this one uses a vector
|
||||
case PCB_MARKER_T:
|
||||
aBoardItem->SetParent( this );
|
||||
|
@ -759,6 +763,12 @@ BOARD_ITEM* BOARD::Remove( BOARD_ITEM* aBoardItem )
|
|||
|
||||
switch( aBoardItem->Type() )
|
||||
{
|
||||
case PCB_NETINFO_T:
|
||||
{
|
||||
NETINFO_ITEM* item = (NETINFO_ITEM*) aBoardItem;
|
||||
m_NetInfo.RemoveNet( item );
|
||||
break;
|
||||
}
|
||||
case PCB_MARKER_T:
|
||||
|
||||
// find the item in the vector, then remove it
|
||||
|
@ -1252,7 +1262,7 @@ NETINFO_ITEM* BOARD::FindNet( int aNetcode ) const
|
|||
wxASSERT( m_NetInfo.GetNetCount() > 0 ); // net zero should exist
|
||||
|
||||
if( aNetcode == NETINFO_LIST::UNCONNECTED && m_NetInfo.GetNetCount() == 0 )
|
||||
return &NETINFO_LIST::ORPHANED;
|
||||
return &NETINFO_LIST::ORPHANED_ITEM;
|
||||
else
|
||||
return m_NetInfo.GetNetItem( aNetcode );
|
||||
}
|
||||
|
|
|
@ -821,6 +821,11 @@ public:
|
|||
m_NetInfo.AppendNet( aNewNet );
|
||||
}
|
||||
|
||||
NETINFO_LIST& GetNetInfo()
|
||||
{
|
||||
return m_NetInfo;
|
||||
}
|
||||
|
||||
#ifndef SWIG
|
||||
/**
|
||||
* Function BeginNets
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#include <class_board_item.h>
|
||||
|
||||
BOARD_CONNECTED_ITEM::BOARD_CONNECTED_ITEM( BOARD_ITEM* aParent, KICAD_T idtype ) :
|
||||
BOARD_ITEM( aParent, idtype ), m_netinfo( &NETINFO_LIST::ORPHANED ),
|
||||
BOARD_ITEM( aParent, idtype ), m_netinfo( &NETINFO_LIST::ORPHANED_ITEM ),
|
||||
m_Subnet( 0 ), m_ZoneSubnet( 0 )
|
||||
{
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ bool BOARD_CONNECTED_ITEM::SetNetCode( int aNetCode, bool aNoAssert )
|
|||
if( ( aNetCode >= 0 ) && board )
|
||||
m_netinfo = board->FindNet( aNetCode );
|
||||
else
|
||||
m_netinfo = &NETINFO_LIST::ORPHANED;
|
||||
m_netinfo = &NETINFO_LIST::ORPHANED_ITEM;
|
||||
|
||||
if( !aNoAssert )
|
||||
assert( m_netinfo );
|
||||
|
|
|
@ -115,6 +115,7 @@ MODULE::MODULE( const MODULE& aModule ) :
|
|||
for( D_PAD* pad = aModule.m_Pads; pad; pad = pad->Next() )
|
||||
{
|
||||
D_PAD* newpad = new D_PAD( *pad );
|
||||
assert( newpad->GetNet() == pad->GetNet() );
|
||||
newpad->SetParent( this );
|
||||
m_Pads.PushBack( newpad );
|
||||
}
|
||||
|
@ -186,7 +187,7 @@ void MODULE::ClearAllNets()
|
|||
// Force the ORPHANED dummy net info for all pads.
|
||||
// ORPHANED dummy net does not depend on a board
|
||||
for( D_PAD* pad = Pads(); pad; pad = pad->Next() )
|
||||
pad->SetNetCode( NETINFO_LIST::FORCE_ORPHANED );
|
||||
pad->SetNetCode( NETINFO_LIST::ORPHANED );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
|
||||
#include <gr_basic.h>
|
||||
#include <class_netclass.h>
|
||||
#include <class_board_item.h>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <hashtables.h>
|
||||
|
||||
|
@ -290,12 +291,17 @@ public:
|
|||
unsigned GetNetCount() const { return m_netNames.size(); }
|
||||
|
||||
/**
|
||||
* Function Append
|
||||
* adds \a aNewElement to the end of the list. Negative net code means it is going to be
|
||||
* Function AppendNet
|
||||
* adds \a aNewElement to the end of the net list. Negative net code means it is going to be
|
||||
* auto-assigned.
|
||||
*/
|
||||
void AppendNet( NETINFO_ITEM* aNewElement );
|
||||
|
||||
/**
|
||||
* Function RemoveNet
|
||||
* Removes a new from the net list.
|
||||
*/
|
||||
void RemoveNet( NETINFO_ITEM* aNet );
|
||||
/**
|
||||
* Function GetPadCount
|
||||
* @return the number of pads in board
|
||||
|
@ -347,11 +353,11 @@ public:
|
|||
|
||||
///> Constant that forces initialization of a netinfo item to the NETINFO_ITEM ORPHANED
|
||||
///> (typically -1) when calling SetNetCode od board connected items
|
||||
static const int FORCE_ORPHANED;
|
||||
static const int ORPHANED;
|
||||
|
||||
///> NETINFO_ITEM meaning that there was no net assigned for an item, as there was no
|
||||
///> board storing net list available.
|
||||
static NETINFO_ITEM ORPHANED;
|
||||
static NETINFO_ITEM ORPHANED_ITEM;
|
||||
|
||||
#if defined(DEBUG)
|
||||
void Show() const;
|
||||
|
@ -422,6 +428,11 @@ public:
|
|||
}
|
||||
#endif
|
||||
|
||||
BOARD* GetParent() const
|
||||
{
|
||||
return m_Parent;
|
||||
}
|
||||
|
||||
private:
|
||||
/**
|
||||
* Function clear
|
||||
|
@ -468,7 +479,7 @@ private:
|
|||
* Class NETINFO_ITEM
|
||||
* handles the data for a net
|
||||
*/
|
||||
class NETINFO_ITEM
|
||||
class NETINFO_ITEM : public BOARD_ITEM
|
||||
{
|
||||
friend class NETINFO_LIST;
|
||||
|
||||
|
@ -485,7 +496,7 @@ private:
|
|||
// item of the net classes list
|
||||
NETCLASSPTR m_NetClass;
|
||||
|
||||
BOARD_ITEM* m_parent; ///< The parent board item object the net belongs to.
|
||||
BOARD* m_parent; ///< The parent board the net belongs to.
|
||||
|
||||
public:
|
||||
std::vector<D_PAD*> m_PadInNetList; ///< List of pads connected to this net
|
||||
|
@ -498,9 +509,33 @@ public:
|
|||
unsigned m_RatsnestEndIdx; // Ending point of ratsnests of this net
|
||||
// (excluded) in this buffer
|
||||
|
||||
NETINFO_ITEM( BOARD_ITEM* aParent, const wxString& aNetName = wxEmptyString, int aNetCode = -1 );
|
||||
NETINFO_ITEM( BOARD* aParent, const wxString& aNetName = wxEmptyString, int aNetCode = -1 );
|
||||
~NETINFO_ITEM();
|
||||
|
||||
static inline bool ClassOf( const EDA_ITEM* aItem )
|
||||
{
|
||||
return aItem && PCB_T == aItem->Type();
|
||||
}
|
||||
|
||||
wxString GetClass() const
|
||||
{
|
||||
return wxT( "NETINFO_ITEM" );
|
||||
}
|
||||
|
||||
void Show( int nestLevel, std::ostream& os ) const
|
||||
{
|
||||
}
|
||||
|
||||
const wxPoint& GetPosition() const
|
||||
{
|
||||
static wxPoint dummy(0, 0);
|
||||
return dummy;
|
||||
}
|
||||
|
||||
void SetPosition( const wxPoint& aPos )
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Function SetClass
|
||||
* sets \a aNetclass into this NET
|
||||
|
@ -622,6 +657,8 @@ public:
|
|||
*/
|
||||
int GetNet() const { return m_NetCode; }
|
||||
|
||||
void SetNetCode( int aNetCode ) { m_NetCode = aNetCode; }
|
||||
|
||||
/**
|
||||
* Function GetNodesCount
|
||||
* @return int - number of nodes in the net
|
||||
|
@ -663,6 +700,12 @@ public:
|
|||
|
||||
SetClass( NETCLASSPTR() );
|
||||
}
|
||||
|
||||
BOARD* GetParent() const
|
||||
{
|
||||
return m_parent;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -49,7 +49,8 @@
|
|||
/* class NETINFO_ITEM: handle data relative to a given net */
|
||||
/*********************************************************/
|
||||
|
||||
NETINFO_ITEM::NETINFO_ITEM( BOARD_ITEM* aParent, const wxString& aNetName, int aNetCode ) :
|
||||
NETINFO_ITEM::NETINFO_ITEM( BOARD* aParent, const wxString& aNetName, int aNetCode ) :
|
||||
BOARD_ITEM( aParent, PCB_NETINFO_T ),
|
||||
m_NetCode( aNetCode ), m_Netname( aNetName ), m_ShortNetname( m_Netname.AfterLast( '/' ) )
|
||||
{
|
||||
m_parent = aParent;
|
||||
|
|
|
@ -69,6 +69,30 @@ void NETINFO_LIST::clear()
|
|||
}
|
||||
|
||||
|
||||
void NETINFO_LIST::RemoveNet( NETINFO_ITEM* aNet )
|
||||
{
|
||||
for( NETCODES_MAP::iterator i = m_netCodes.begin(); i != m_netCodes.end(); ++i )
|
||||
{
|
||||
if ( i->second == aNet )
|
||||
{
|
||||
m_netCodes.erase(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for( NETNAMES_MAP::iterator i = m_netNames.begin(); i != m_netNames.end(); ++i )
|
||||
{
|
||||
if ( i->second == aNet )
|
||||
{
|
||||
m_netNames.erase(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
m_newNetCode = std::min( m_newNetCode, aNet->m_NetCode - 1 );
|
||||
}
|
||||
|
||||
|
||||
void NETINFO_LIST::AppendNet( NETINFO_ITEM* aNewElement )
|
||||
{
|
||||
// if there is a net with such name then just assign the correct number
|
||||
|
@ -295,6 +319,6 @@ NETINFO_ITEM* NETINFO_MAPPING::iterator::operator->() const
|
|||
|
||||
|
||||
const int NETINFO_LIST::UNCONNECTED = 0;
|
||||
const int NETINFO_LIST::FORCE_ORPHANED = -1;
|
||||
const int NETINFO_LIST::ORPHANED = -1;
|
||||
|
||||
NETINFO_ITEM NETINFO_LIST::ORPHANED = NETINFO_ITEM( NULL, wxEmptyString, NETINFO_LIST::UNCONNECTED );
|
||||
NETINFO_ITEM NETINFO_LIST::ORPHANED_ITEM = NETINFO_ITEM( NULL, wxEmptyString, NETINFO_LIST::UNCONNECTED );
|
|
@ -24,6 +24,9 @@
|
|||
|
||||
#include <collectors.h>
|
||||
#include <pcbnew.h>
|
||||
#include <netlist_reader.h>
|
||||
#include <pcb_netlist.h>
|
||||
#include <dialogs/dialog_update_pcb.h>
|
||||
|
||||
#include <tools/common_actions.h>
|
||||
#include <tool/tool_manager.h>
|
||||
|
@ -243,6 +246,28 @@ void PCB_EDIT_FRAME::KiwayMailIn( KIWAY_EXPRESS& mail )
|
|||
ExecuteRemoteCommand( payload.c_str() );
|
||||
break;
|
||||
|
||||
case MAIL_SCH_PCB_UPDATE:
|
||||
{
|
||||
NETLIST netlist;
|
||||
|
||||
try {
|
||||
STRING_LINE_READER* lineReader = new STRING_LINE_READER( payload, _( "EEschema netlist" ) );
|
||||
KICAD_NETLIST_READER netlistReader( lineReader, &netlist );
|
||||
netlistReader.LoadNetlist();
|
||||
}
|
||||
catch( const IO_ERROR& ioe )
|
||||
{
|
||||
assert( false ); // should never happen
|
||||
}
|
||||
|
||||
DIALOG_UPDATE_PCB updateDialog( this, &netlist );
|
||||
|
||||
updateDialog.PerformUpdate( true );
|
||||
updateDialog.ShowModal();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// many many others.
|
||||
default:
|
||||
;
|
||||
|
|
|
@ -0,0 +1,128 @@
|
|||
#include <common.h>
|
||||
#include <wxPcbStruct.h>
|
||||
#include <pcb_netlist.h>
|
||||
#include <dialog_update_pcb.h>
|
||||
#include <wx_html_report_panel.h>
|
||||
#include <board_netlist_updater.h>
|
||||
#include <tool/tool_manager.h>
|
||||
#include <tools/common_actions.h>
|
||||
#include <class_draw_panel_gal.h>
|
||||
#include <class_board.h>
|
||||
#include <ratsnest_data.h>
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB( PCB_EDIT_FRAME* aParent, NETLIST *aNetlist ) :
|
||||
DIALOG_UPDATE_PCB_BASE ( aParent ),
|
||||
m_frame (aParent),
|
||||
m_netlist (aNetlist)
|
||||
{
|
||||
m_messagePanel->SetLabel( _("Changes to be applied:") );
|
||||
m_messagePanel->SetLazyUpdate ( true );
|
||||
m_netlist->SortByReference();
|
||||
m_btnPerformUpdate->SetFocus();
|
||||
|
||||
m_messagePanel->SetVisibleSeverities( REPORTER::RPT_WARNING | REPORTER::RPT_ERROR | REPORTER::RPT_ACTION );
|
||||
}
|
||||
|
||||
DIALOG_UPDATE_PCB::~DIALOG_UPDATE_PCB()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DIALOG_UPDATE_PCB::PerformUpdate( bool aDryRun )
|
||||
{
|
||||
m_messagePanel->Clear();
|
||||
|
||||
REPORTER &reporter = m_messagePanel->Reporter();
|
||||
KIGFX::VIEW* view = m_frame->GetGalCanvas()->GetView();
|
||||
TOOL_MANAGER *toolManager = m_frame->GetToolManager();
|
||||
BOARD *board = m_frame->GetBoard();
|
||||
|
||||
if( !aDryRun )
|
||||
{
|
||||
// Remove old modules
|
||||
for( MODULE* module = board->m_Modules; module; module = module->Next() )
|
||||
{
|
||||
module->RunOnChildren( boost::bind( &KIGFX::VIEW::Remove, view, _1 ) );
|
||||
view->Remove( module );
|
||||
}
|
||||
|
||||
// Clear selection, just in case a selected item has to be removed
|
||||
toolManager->RunAction( COMMON_ACTIONS::selectionClear, true );
|
||||
}
|
||||
|
||||
m_netlist->SetDeleteExtraFootprints( true );
|
||||
m_netlist->SetFindByTimeStamp( m_matchByTimestamp->GetValue() );
|
||||
m_netlist->SetReplaceFootprints( true );
|
||||
|
||||
try {
|
||||
m_frame->LoadFootprints( *m_netlist, &reporter );
|
||||
}
|
||||
catch( IO_ERROR &error )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
reporter.Report( _( "Failed to load one or more footprints. Please add the missing libraries in PCBNew configuration. "
|
||||
"The PCB will not update completely." ), REPORTER::RPT_ERROR );
|
||||
reporter.Report( error.errorText, REPORTER::RPT_INFO );
|
||||
}
|
||||
|
||||
BOARD_NETLIST_UPDATER updater( m_frame, m_frame->GetBoard() );
|
||||
|
||||
updater.SetReporter ( &reporter );
|
||||
updater.SetIsDryRun( aDryRun);
|
||||
updater.SetLookupByTimestamp( m_matchByTimestamp->GetValue() );
|
||||
updater.SetDeleteUnusedComponents ( true );
|
||||
updater.SetReplaceFootprints( true );
|
||||
updater.SetDeleteSinglePadNets ( false );
|
||||
|
||||
updater.UpdateNetlist( *m_netlist );
|
||||
|
||||
m_messagePanel->Flush();
|
||||
|
||||
if( aDryRun )
|
||||
return;
|
||||
|
||||
std::vector<MODULE*> newFootprints = updater.GetAddedComponents();
|
||||
|
||||
m_frame->OnModify();
|
||||
m_frame->SetCurItem( NULL );
|
||||
|
||||
// Reload modules
|
||||
for( MODULE* module = board->m_Modules; module; module = module->Next() )
|
||||
{
|
||||
module->RunOnChildren( boost::bind( &KIGFX::VIEW::Add, view, _1 ) );
|
||||
view->Add( module );
|
||||
module->ViewUpdate();
|
||||
}
|
||||
|
||||
// Rebuild the board connectivity:
|
||||
if( m_frame->IsGalCanvasActive() )
|
||||
board->GetRatsnest()->ProcessBoard();
|
||||
|
||||
m_frame->Compile_Ratsnest( NULL, true );
|
||||
|
||||
m_frame->SetMsgPanel( board );
|
||||
|
||||
m_btnPerformUpdate->Enable( false );
|
||||
m_btnPerformUpdate->SetLabel( _( "Update complete" ) );
|
||||
m_btnCancel->SetFocus();
|
||||
}
|
||||
|
||||
void DIALOG_UPDATE_PCB::OnMatchChange( wxCommandEvent& event )
|
||||
{
|
||||
PerformUpdate( true );
|
||||
}
|
||||
|
||||
void DIALOG_UPDATE_PCB::OnCancelClick( wxCommandEvent& event )
|
||||
{
|
||||
EndModal( wxID_CANCEL );
|
||||
}
|
||||
|
||||
void DIALOG_UPDATE_PCB::OnUpdateClick( wxCommandEvent& event )
|
||||
{
|
||||
m_messagePanel->SetLabel( _("Changes applied to the PCB:") );
|
||||
PerformUpdate( false );
|
||||
m_btnCancel->SetFocus( );
|
||||
}
|
|
@ -0,0 +1,661 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<wxFormBuilder_Project>
|
||||
<FileVersion major="1" minor="13" />
|
||||
<object class="Project" expanded="1">
|
||||
<property name="class_decoration"></property>
|
||||
<property name="code_generation">C++</property>
|
||||
<property name="disconnect_events">1</property>
|
||||
<property name="disconnect_mode">source_name</property>
|
||||
<property name="disconnect_php_events">0</property>
|
||||
<property name="disconnect_python_events">0</property>
|
||||
<property name="embedded_files_path">res</property>
|
||||
<property name="encoding">UTF-8</property>
|
||||
<property name="event_generation">connect</property>
|
||||
<property name="file">dialog_update_pcb_base</property>
|
||||
<property name="first_id">1000</property>
|
||||
<property name="help_provider">none</property>
|
||||
<property name="internationalize">1</property>
|
||||
<property name="name">dialog_update_pcb_base</property>
|
||||
<property name="namespace"></property>
|
||||
<property name="path">.</property>
|
||||
<property name="precompiled_header"></property>
|
||||
<property name="relative_path">1</property>
|
||||
<property name="skip_lua_events">1</property>
|
||||
<property name="skip_php_events">1</property>
|
||||
<property name="skip_python_events">1</property>
|
||||
<property name="ui_table">UI</property>
|
||||
<property name="use_enum">1</property>
|
||||
<property name="use_microsoft_bom">0</property>
|
||||
<object class="Dialog" expanded="1">
|
||||
<property name="aui_managed">0</property>
|
||||
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
|
||||
<property name="bg"></property>
|
||||
<property name="center"></property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="event_handler">impl_virtual</property>
|
||||
<property name="extra_style"></property>
|
||||
<property name="fg"></property>
|
||||
<property name="font"></property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="minimum_size">800,700</property>
|
||||
<property name="name">DIALOG_UPDATE_PCB_BASE</property>
|
||||
<property name="pos"></property>
|
||||
<property name="size">-1,-1</property>
|
||||
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
||||
<property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
|
||||
<property name="title">Update PCB from Schematics</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnActivate"></event>
|
||||
<event name="OnActivateApp"></event>
|
||||
<event name="OnAuiFindManager"></event>
|
||||
<event name="OnAuiPaneButton"></event>
|
||||
<event name="OnAuiPaneClose"></event>
|
||||
<event name="OnAuiPaneMaximize"></event>
|
||||
<event name="OnAuiPaneRestore"></event>
|
||||
<event name="OnAuiRender"></event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnClose"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnHibernate"></event>
|
||||
<event name="OnIconize"></event>
|
||||
<event name="OnIdle"></event>
|
||||
<event name="OnInitDialog"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
<object class="wxBoxSizer" expanded="1">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">bMainSizer</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND|wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxFlexGridSizer" expanded="1">
|
||||
<property name="cols">3</property>
|
||||
<property name="flexible_direction">wxBOTH</property>
|
||||
<property name="growablecols"></property>
|
||||
<property name="growablerows"></property>
|
||||
<property name="hgap">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">fgSizer2</property>
|
||||
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
|
||||
<property name="permission">none</property>
|
||||
<property name="rows">0</property>
|
||||
<property name="vgap">0</property>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticText" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Match components by:</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_staticText1</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxRadioButton" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Reference</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_matchByReference</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="value">0</property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRadioButton">OnMatchChange</event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxRadioButton" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Timestamp</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_matchByTimestamp</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="value">0</property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRadioButton">OnMatchChange</event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxBoxSizer" expanded="1">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">bLowerSizer</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND | wxALL</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxPanel" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size">-300,150</property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_messagePanel</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="subclass">WX_HTML_REPORT_PANEL; wx_html_report_panel.h</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style">wxTAB_TRAVERSAL</property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxFlexGridSizer" expanded="1">
|
||||
<property name="cols">5</property>
|
||||
<property name="flexible_direction">wxBOTH</property>
|
||||
<property name="growablecols">0</property>
|
||||
<property name="growablerows"></property>
|
||||
<property name="hgap">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">fgSizer1</property>
|
||||
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
|
||||
<property name="permission">none</property>
|
||||
<property name="rows">1</property>
|
||||
<property name="vgap">0</property>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxButton" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default">0</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_CANCEL</property>
|
||||
<property name="label">Close</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_btnCancel</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnButtonClick">OnCancelClick</event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxButton" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default">0</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Perform PCB Update</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_btnPerformUpdate</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnButtonClick">OnUpdateClick</event>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</wxFormBuilder_Project>
|
|
@ -0,0 +1,56 @@
|
|||
/**
|
||||
* @file pcbnew/dialogs/dialog_update_pcb.h
|
||||
*/
|
||||
|
||||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 1992-2012 KiCad Developers, see change_log.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 2
|
||||
* 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, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef _DIALOG_UPDATE_PCB_H_
|
||||
#define _DIALOG_UPDATE_PCB_H_
|
||||
|
||||
#include <dialog_update_pcb_base.h>
|
||||
|
||||
class NETLIST;
|
||||
class PCB_EDIT_FRAME;
|
||||
|
||||
class DIALOG_UPDATE_PCB : public DIALOG_UPDATE_PCB_BASE
|
||||
{
|
||||
private:
|
||||
PCB_EDIT_FRAME* m_frame;
|
||||
NETLIST *m_netlist;
|
||||
|
||||
public:
|
||||
DIALOG_UPDATE_PCB( PCB_EDIT_FRAME* aParent, NETLIST *aNetlist );
|
||||
~DIALOG_UPDATE_PCB();
|
||||
|
||||
void PerformUpdate( bool aDryRun );
|
||||
|
||||
private:
|
||||
|
||||
virtual void OnMatchChange( wxCommandEvent& event );
|
||||
virtual void OnCancelClick( wxCommandEvent& event );
|
||||
virtual void OnUpdateClick( wxCommandEvent& event );
|
||||
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,85 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Jun 6 2014)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "wx_html_report_panel.h"
|
||||
|
||||
#include "dialog_update_pcb_base.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
DIALOG_UPDATE_PCB_BASE::DIALOG_UPDATE_PCB_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
|
||||
{
|
||||
this->SetSizeHints( wxSize( 800,700 ), wxDefaultSize );
|
||||
|
||||
wxBoxSizer* bMainSizer;
|
||||
bMainSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxFlexGridSizer* fgSizer2;
|
||||
fgSizer2 = new wxFlexGridSizer( 0, 3, 0, 0 );
|
||||
fgSizer2->SetFlexibleDirection( wxBOTH );
|
||||
fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_staticText1 = new wxStaticText( this, wxID_ANY, _("Match components by:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText1->Wrap( -1 );
|
||||
fgSizer2->Add( m_staticText1, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
m_matchByReference = new wxRadioButton( this, wxID_ANY, _("Reference"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizer2->Add( m_matchByReference, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
m_matchByTimestamp = new wxRadioButton( this, wxID_ANY, _("Timestamp"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizer2->Add( m_matchByTimestamp, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
bMainSizer->Add( fgSizer2, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
wxBoxSizer* bLowerSizer;
|
||||
bLowerSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_messagePanel = new WX_HTML_REPORT_PANEL( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
m_messagePanel->SetMinSize( wxSize( -300,150 ) );
|
||||
|
||||
bLowerSizer->Add( m_messagePanel, 1, wxEXPAND | wxALL, 5 );
|
||||
|
||||
|
||||
bMainSizer->Add( bLowerSizer, 1, wxEXPAND, 5 );
|
||||
|
||||
wxFlexGridSizer* fgSizer1;
|
||||
fgSizer1 = new wxFlexGridSizer( 1, 5, 0, 0 );
|
||||
fgSizer1->AddGrowableCol( 0 );
|
||||
fgSizer1->SetFlexibleDirection( wxBOTH );
|
||||
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_btnCancel = new wxButton( this, wxID_CANCEL, _("Close"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizer1->Add( m_btnCancel, 1, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
|
||||
|
||||
m_btnPerformUpdate = new wxButton( this, wxID_ANY, _("Perform PCB Update"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizer1->Add( m_btnPerformUpdate, 0, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
bMainSizer->Add( fgSizer1, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
this->SetSizer( bMainSizer );
|
||||
this->Layout();
|
||||
bMainSizer->Fit( this );
|
||||
|
||||
// Connect Events
|
||||
m_matchByReference->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_UPDATE_PCB_BASE::OnMatchChange ), NULL, this );
|
||||
m_matchByTimestamp->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_UPDATE_PCB_BASE::OnMatchChange ), NULL, this );
|
||||
m_btnCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_PCB_BASE::OnCancelClick ), NULL, this );
|
||||
m_btnPerformUpdate->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_PCB_BASE::OnUpdateClick ), NULL, this );
|
||||
}
|
||||
|
||||
DIALOG_UPDATE_PCB_BASE::~DIALOG_UPDATE_PCB_BASE()
|
||||
{
|
||||
// Disconnect Events
|
||||
m_matchByReference->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_UPDATE_PCB_BASE::OnMatchChange ), NULL, this );
|
||||
m_matchByTimestamp->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_UPDATE_PCB_BASE::OnMatchChange ), NULL, this );
|
||||
m_btnCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_PCB_BASE::OnCancelClick ), NULL, this );
|
||||
m_btnPerformUpdate->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_UPDATE_PCB_BASE::OnUpdateClick ), NULL, this );
|
||||
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Jun 6 2014)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __DIALOG_UPDATE_PCB_BASE_H__
|
||||
#define __DIALOG_UPDATE_PCB_BASE_H__
|
||||
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/intl.h>
|
||||
class DIALOG_SHIM;
|
||||
class WX_HTML_REPORT_PANEL;
|
||||
|
||||
#include "dialog_shim.h"
|
||||
#include <wx/string.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/font.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/radiobut.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/dialog.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class DIALOG_UPDATE_PCB_BASE
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class DIALOG_UPDATE_PCB_BASE : public DIALOG_SHIM
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxStaticText* m_staticText1;
|
||||
wxRadioButton* m_matchByReference;
|
||||
wxRadioButton* m_matchByTimestamp;
|
||||
WX_HTML_REPORT_PANEL* m_messagePanel;
|
||||
wxButton* m_btnCancel;
|
||||
wxButton* m_btnPerformUpdate;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnMatchChange( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnUpdateClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
DIALOG_UPDATE_PCB_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Update PCB from Schematics"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
~DIALOG_UPDATE_PCB_BASE();
|
||||
|
||||
};
|
||||
|
||||
#endif //__DIALOG_UPDATE_PCB_BASE_H__
|
|
@ -23,6 +23,8 @@
|
|||
# These are additions to any inherited from pcbnew dir:
|
||||
include_directories( . )
|
||||
|
||||
include_directories( ${CURL_INCLUDE_DIRS} )
|
||||
|
||||
set( GITHUB_PLUGIN_SRCS
|
||||
github_plugin.cpp
|
||||
github_getliblist.cpp
|
||||
|
|
|
@ -422,9 +422,10 @@ void LAYER_WIDGET::insertLayerRow( int aRow, const ROW& aSpec )
|
|||
// column 1 (COLUMN_COLORBM)
|
||||
col = COLUMN_COLORBM;
|
||||
wxBitmapButton* bmb = makeColorButton( m_LayerScrolledWindow, aSpec.color, encodeId( col, aSpec.id ) );
|
||||
bmb->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( LAYER_WIDGET::OnMiddleDownLayerColor ), NULL, this );
|
||||
bmb->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( LAYER_WIDGET::OnLeftDownLayers ), NULL, this );
|
||||
bmb->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( LAYER_WIDGET::OnMiddleDownLayerColor ), NULL, this );
|
||||
bmb->Connect( wxEVT_MIDDLE_DOWN, wxMouseEventHandler( LAYER_WIDGET::OnMiddleDownLayerColor ), NULL, this );
|
||||
bmb->SetToolTip( _("Left click for color change, right click for menu" ) );
|
||||
bmb->SetToolTip( _("Left double click or middle click for color change, right click for menu" ) );
|
||||
m_LayersFlexGridSizer->wxSizer::Insert( index+col, bmb, 0, flags );
|
||||
|
||||
// column 2 (COLUMN_COLOR_LYR_CB)
|
||||
|
@ -458,9 +459,9 @@ void LAYER_WIDGET::insertRenderRow( int aRow, const ROW& aSpec )
|
|||
if( aSpec.color != -1 )
|
||||
{
|
||||
wxBitmapButton* bmb = makeColorButton( m_RenderScrolledWindow, aSpec.color, encodeId( col, aSpec.id ) );
|
||||
bmb->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( LAYER_WIDGET::OnMiddleDownRenderColor ), NULL, this );
|
||||
bmb->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( LAYER_WIDGET::OnMiddleDownRenderColor ), NULL, this );
|
||||
bmb->Connect( wxEVT_MIDDLE_DOWN, wxMouseEventHandler( LAYER_WIDGET::OnMiddleDownRenderColor ), NULL, this );
|
||||
bmb->SetToolTip( _( "Left click for color change" ) );
|
||||
bmb->SetToolTip( _( "Left double click or middle click for color change" ) );
|
||||
m_RenderFlexGridSizer->wxSizer::Insert( index+col, bmb, 0, flags );
|
||||
|
||||
// could add a left click handler on the color button that toggles checkbox.
|
||||
|
|
|
@ -605,6 +605,14 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
|
|||
//----- Tools menu ----------------------------------------------------------
|
||||
wxMenu* toolsMenu = new wxMenu;
|
||||
|
||||
AddMenuItem( toolsMenu,
|
||||
ID_UPDATE_PCB_FROM_SCH,
|
||||
_( "Update PCB from Schematics" ),
|
||||
_( "Updates the PCB design with the current schematic (forward annotation)." ),
|
||||
KiBitmap( libedit_xpm ) );
|
||||
|
||||
toolsMenu->AppendSeparator( );
|
||||
|
||||
AddMenuItem( toolsMenu, ID_GET_NETLIST,
|
||||
_( "&Netlist" ),
|
||||
_( "Read the netlist and update board connectivity" ),
|
||||
|
|
|
@ -87,7 +87,7 @@ void PCB_EDIT_FRAME::ReadPcbNetlist( const wxString& aNetlistFileName,
|
|||
|
||||
SetLastNetListRead( aNetlistFileName );
|
||||
netlistReader->LoadNetlist();
|
||||
loadFootprints( netlist, aReporter );
|
||||
LoadFootprints( netlist, aReporter );
|
||||
}
|
||||
catch( const IO_ERROR& ioe )
|
||||
{
|
||||
|
@ -115,7 +115,6 @@ void PCB_EDIT_FRAME::ReadPcbNetlist( const wxString& aNetlistFileName,
|
|||
|
||||
netlist.SortByReference();
|
||||
board->ReplaceNetlist( netlist, aDeleteSinglePadNets, &newFootprints, aReporter );
|
||||
|
||||
|
||||
// If it was a dry run, nothing has changed so we're done.
|
||||
if( netlist.IsDryRun() )
|
||||
|
@ -124,12 +123,14 @@ void PCB_EDIT_FRAME::ReadPcbNetlist( const wxString& aNetlistFileName,
|
|||
if( IsGalCanvasActive() )
|
||||
{
|
||||
SpreadFootprints( &newFootprints, false, false );
|
||||
|
||||
BOOST_FOREACH( MODULE* footprint, newFootprints )
|
||||
if( !newFootprints.empty() )
|
||||
{
|
||||
m_toolManager->RunAction( COMMON_ACTIONS::selectItem, true, footprint );
|
||||
BOOST_FOREACH( MODULE* footprint, newFootprints )
|
||||
{
|
||||
m_toolManager->RunAction( COMMON_ACTIONS::selectItem, true, footprint );
|
||||
}
|
||||
m_toolManager->InvokeTool( "pcbnew.InteractiveEdit" );
|
||||
}
|
||||
m_toolManager->InvokeTool( "pcbnew.InteractiveEdit" );
|
||||
}
|
||||
|
||||
OnModify();
|
||||
|
@ -205,7 +206,7 @@ MODULE* PCB_EDIT_FRAME::ListAndSelectModuleName()
|
|||
|
||||
#define ALLOW_PARTIAL_FPID 1
|
||||
|
||||
void PCB_EDIT_FRAME::loadFootprints( NETLIST& aNetlist, REPORTER* aReporter )
|
||||
void PCB_EDIT_FRAME::LoadFootprints( NETLIST& aNetlist, REPORTER* aReporter )
|
||||
throw( IO_ERROR, PARSE_ERROR )
|
||||
{
|
||||
wxString msg;
|
||||
|
@ -329,4 +330,3 @@ void PCB_EDIT_FRAME::loadFootprints( NETLIST& aNetlist, REPORTER* aReporter )
|
|||
component->SetModule( module );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -70,6 +70,8 @@
|
|||
#include <tool/tool_dispatcher.h>
|
||||
#include <tools/common_actions.h>
|
||||
|
||||
#include <wildcards_and_files_ext.h>
|
||||
|
||||
#if defined(KICAD_SCRIPTING) || defined(KICAD_SCRIPTING_WXPYTHON)
|
||||
#include <python_scripting.h>
|
||||
#endif
|
||||
|
@ -232,6 +234,8 @@ BEGIN_EVENT_TABLE( PCB_EDIT_FRAME, PCB_BASE_FRAME )
|
|||
EVT_TOOL( ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR_MICROWAVE,
|
||||
PCB_EDIT_FRAME::OnSelectOptionToolbar )
|
||||
|
||||
EVT_TOOL( ID_UPDATE_PCB_FROM_SCH, PCB_EDIT_FRAME::OnUpdatePCBFromSch )
|
||||
|
||||
EVT_TOOL_RANGE( ID_TB_OPTIONS_SHOW_ZONES, ID_TB_OPTIONS_SHOW_ZONES_OUTLINES_ONLY,
|
||||
PCB_EDIT_FRAME::OnSelectOptionToolbar )
|
||||
|
||||
|
@ -1080,3 +1084,30 @@ void PCB_EDIT_FRAME::OnConfigurePaths( wxCommandEvent& aEvent )
|
|||
{
|
||||
Pgm().ConfigurePaths( this );
|
||||
}
|
||||
|
||||
|
||||
void PCB_EDIT_FRAME::OnUpdatePCBFromSch( wxCommandEvent& event )
|
||||
{
|
||||
if( Kiface().IsSingle() )
|
||||
{
|
||||
DisplayError( this, _( "Cannot update the PCB, because the Kicad is"
|
||||
" opened in stand-alone mode. In order to create/update"
|
||||
" PCBs from schematics, you need to launch Kicad shell"
|
||||
" and create a PCB project." ) );
|
||||
return;
|
||||
} else {
|
||||
KIWAY_PLAYER* frame = Kiway().Player( FRAME_SCH, true );
|
||||
wxFileName schfn = Prj().AbsolutePath( Prj().GetProjectName() );
|
||||
|
||||
schfn.SetExt( SchematicFileExtension );
|
||||
|
||||
if( !frame->IsVisible() )
|
||||
{
|
||||
frame->OpenProjectFiles( std::vector<wxString>( 1, schfn.GetFullPath() ) );
|
||||
frame->Show( false );
|
||||
}
|
||||
|
||||
Kiway().ExpressMail( FRAME_SCH, MAIL_SCH_PCB_UPDATE_REQUEST, "", this );
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -393,6 +393,7 @@ enum pcbnew_ids
|
|||
ID_FOOTPRINT_WIZARD_SELECT_WIZARD,
|
||||
ID_FOOTPRINT_WIZARD_EXPORT_TO_BOARD,
|
||||
|
||||
ID_UPDATE_PCB_FROM_SCH,
|
||||
ID_PCBNEW_END_LIST
|
||||
};
|
||||
|
||||
|
|
|
@ -1003,7 +1003,7 @@ void RN_NET::processPads()
|
|||
m_links.RemoveConnection( edge );
|
||||
|
||||
LSET layers = pad->GetLayerSet();
|
||||
RN_LINKS::RN_NODE_SET candidates = m_links.GetNodes();
|
||||
const RN_LINKS::RN_NODE_SET& candidates = m_links.GetNodes();
|
||||
RN_LINKS::RN_NODE_SET::iterator point, pointEnd;
|
||||
|
||||
point = candidates.begin();
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
|
||||
// ignore a couple of items that generate warnings from swig built code
|
||||
|
||||
%ignore NETINFO_ITEM;
|
||||
%ignore BOARD_ITEM::ZeroOffset;
|
||||
%ignore D_PAD::m_PadSketchModePenSize;
|
||||
|
||||
|
|
|
@ -357,7 +357,7 @@ int DRAWING_TOOL::DrawDimension( const TOOL_EVENT& aEvent )
|
|||
|
||||
m_view->Add( dimension );
|
||||
m_board->Add( dimension );
|
||||
dimension->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY );
|
||||
//dimension->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY );
|
||||
|
||||
m_frame->OnModify();
|
||||
m_frame->SaveCopyInUndoList( dimension, UR_NEW );
|
||||
|
|
|
@ -69,7 +69,7 @@ int PICKER_TOOL::Main( const TOOL_EVENT& aEvent )
|
|||
if( !getNext )
|
||||
break;
|
||||
else
|
||||
m_toolMgr->PassEvent();
|
||||
setControls();
|
||||
}
|
||||
|
||||
else if( evt->IsCancel() || evt->IsActivate() )
|
||||
|
|
Loading…
Reference in New Issue