diff --git a/files/KiCad_projectSpecificLibraryExample/fp-lib-table b/files/KiCad_projectSpecificLibraryExample/fp-lib-table new file mode 100644 index 0000000..fd03ee6 --- /dev/null +++ b/files/KiCad_projectSpecificLibraryExample/fp-lib-table @@ -0,0 +1,26 @@ +(fp_lib_table + (version 7) + (lib (name "000_SDM_Resistor")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/000_SDM_Resistor.pretty")(options "")(descr "")) + (lib (name "010_capacitor_smd")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/010_capacitor_smd.pretty")(options "")(descr "")) + (lib (name "020_SMD_Inductors")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/020_SMD_Inductors.pretty")(options "")(descr "")) + (lib (name "021_inductor")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/021_inductor.pretty")(options "")(descr "")) + (lib (name "101_FET")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/101_FET.pretty")(options "")(descr "")) + (lib (name "180_relay")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/180_relay.pretty")(options "")(descr "")) + (lib (name "190_active_high_side_switches")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/190_active_high_side_switches.pretty")(options "")(descr "")) + (lib (name "310_smps_buck")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/310_smps_buck.pretty")(options "")(descr "")) + (lib (name "314_PMIC")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/314_PMIC.pretty")(options "")(descr "")) + (lib (name "350_power_driver_motor_dc")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/350_power_driver_motor_dc.pretty")(options "")(descr "")) + (lib (name "370_DCDC_Module")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/370_DCDC_Module.pretty")(options "")(descr "")) + (lib (name "420_MCU_32_bit_microchip")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/420_MCU_32_bit_microchip.pretty")(options "")(descr "")) + (lib (name "800_relay_monostable")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/800_relay_monostable.pretty")(options "")(descr "")) + (lib (name "801_relay_bistable")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/801_relay_bistable.pretty")(options "")(descr "")) + (lib (name "810_Cable_To_Board")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/810_Cable_To_Board.pretty")(options "")(descr "")) + (lib (name "810_connectors_clable_to_Board")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/810_connectors_clable_to_Board.pretty")(options "")(descr "")) + (lib (name "814_connectors_circular")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/814_connectors_circular.pretty")(options "")(descr "")) + (lib (name "815_connectors_fibler_RJ")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/815_connectors_fibler_RJ.pretty")(options "")(descr "")) + (lib (name "817_connectors_serial.ptretty")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/817_connectors_serial.ptretty")(options "")(descr "")) + (lib (name "817_connectors_serial.ptretty - Copy")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/817_connectors_serial.ptretty - Copy")(options "")(descr "")) + (lib (name "818_USB")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/818_USB.pretty")(options "")(descr "")) + (lib (name "819_connectors_card_edge")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/819_connectors_card_edge.pretty")(options "")(descr "")) + (lib (name "870_Button_SMD")(type "KiCad")(uri "${KIPRJMOD}/test_lib/footprints/870_Button_SMD.pretty")(options "")(descr "")) +) diff --git a/files/KiCad_projectSpecificLibraryExample/sym-lib-table b/files/KiCad_projectSpecificLibraryExample/sym-lib-table new file mode 100644 index 0000000..064dc31 --- /dev/null +++ b/files/KiCad_projectSpecificLibraryExample/sym-lib-table @@ -0,0 +1,26 @@ +(sym_lib_table + (version 7) + (lib (name "000_SMD_Resitors")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/000_SMD_Resitors.kicad_sym")(options "")(descr "")) + (lib (name "010_SMD_Capacitors")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/010_SMD_Capacitors.kicad_sym")(options "")(descr "")) + (lib (name "020_SMD_Inductors")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/020_SMD_Inductors.kicad_sym")(options "")(descr "")) + (lib (name "056_Digital_Pot")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/056_Digital_Pot.kicad_sym")(options "")(descr "")) + (lib (name "100_BJT")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/100_BJT.kicad_sym")(options "")(descr "")) + (lib (name "101_FET")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/101_FET.kicad_sym")(options "")(descr "")) + (lib (name "110_Rectifier_Diodes")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/110_Rectifier_Diodes.kicad_sym")(options "")(descr "")) + (lib (name "111_ZenerDiodes")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/111_ZenerDiodes.kicad_sym")(options "")(descr "")) + (lib (name "131_Full_Bridge")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/131_Full_Bridge.kicad_sym")(options "")(descr "")) + (lib (name "180_active_driver_relay")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/180_active_driver_relay.kicad_sym")(options "")(descr "")) + (lib (name "190_active_high_side_switches")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/190_active_high_side_switches.kicad_sym")(options "")(descr "")) + (lib (name "200_OPAMP")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/200_OPAMP.kicad_sym")(options "")(descr "")) + (lib (name "210_Amplifiers")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/210_Amplifiers.kicad_sym")(options "")(descr "")) + (lib (name "314_power_management_ic")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/314_power_management_ic.kicad_sym")(options "")(descr "")) + (lib (name "350_power_driver_motor_dc")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/350_power_driver_motor_dc.kicad_sym")(options "")(descr "")) + (lib (name "370_DCDC_Module")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/370_DCDC_Module.kicad_sym")(options "")(descr "")) + (lib (name "470_digital_io_port_expander")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/470_digital_io_port_expander.kicad_sym")(options "")(descr "")) + (lib (name "551_Logic_And")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/551_Logic_And.kicad_sym")(options "")(descr "")) + (lib (name "818_USB")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/818_USB.kicad_sym")(options "")(descr "")) + (lib (name "819_connectors_cad_edge")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/819_connectors_cad_edge.kicad_sym")(options "")(descr "")) + (lib (name "870_Button_SMD")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/870_Button_SMD.kicad_sym")(options "")(descr "")) + (lib (name "1000_Contactors")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/1000_Contactors.kicad_sym")(options "")(descr "")) + (lib (name "1005_Switches_sym")(type "KiCad")(uri "${KIPRJMOD}/test_lib/symbols/1005_Switches_sym.kicad_sym")(options "")(descr "")) +) diff --git a/files/KiCad_projectSpecificLibraryExample/test.kicad_prl b/files/KiCad_projectSpecificLibraryExample/test.kicad_prl new file mode 100644 index 0000000..47f2f88 --- /dev/null +++ b/files/KiCad_projectSpecificLibraryExample/test.kicad_prl @@ -0,0 +1,77 @@ +{ + "board": { + "active_layer": 0, + "active_layer_preset": "", + "auto_track_width": true, + "hidden_netclasses": [], + "hidden_nets": [], + "high_contrast_mode": 0, + "net_color_mode": 1, + "opacity": { + "images": 0.6, + "pads": 1.0, + "tracks": 1.0, + "vias": 1.0, + "zones": 0.6 + }, + "selection_filter": { + "dimensions": true, + "footprints": true, + "graphics": true, + "keepouts": true, + "lockedItems": false, + "otherItems": true, + "pads": true, + "text": true, + "tracks": true, + "vias": true, + "zones": true + }, + "visible_items": [ + 0, + 1, + 2, + 3, + 4, + 5, + 8, + 9, + 10, + 11, + 12, + 13, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 39, + 40 + ], + "visible_layers": "fffffff_ffffffff", + "zone_display_mode": 0 + }, + "meta": { + "filename": "test.kicad_prl", + "version": 3 + }, + "project": { + "files": [] + } +} diff --git a/footprints/817_connectors_serial.ptretty - Copy/USB_Micro_B_Female_10118193-0001LF.kicad_mod b/footprints/817_connectors_serial.ptretty - Copy/USB_Micro_B_Female_10118193-0001LF.kicad_mod deleted file mode 100644 index df19f9a..0000000 --- a/footprints/817_connectors_serial.ptretty - Copy/USB_Micro_B_Female_10118193-0001LF.kicad_mod +++ /dev/null @@ -1,41 +0,0 @@ -(module USB_Micro_B_Female_10118193-0001LF (layer F.Cu) (tedit 5FCDF6C1) - (descr http://portal.fciconnect.com/Comergent//fci/drawing/10118193.pdf) - (attr smd) - (fp_text reference REF** (at 0 -4.75) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value USB_Micro_B_Female_10118193-0001LF (at 0 4.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 4.014908 2.461848) (end 4.014908 2.841848) (layer F.SilkS) (width 0.1)) - (fp_line (start 4.014908 2.841848) (end 3.644908 2.841848) (layer F.SilkS) (width 0.1)) - (fp_line (start -4.013324 2.84) (end -3.643324 2.84) (layer F.SilkS) (width 0.1)) - (fp_line (start -4.013324 2.46) (end -4.013324 2.84) (layer F.SilkS) (width 0.1)) - (fp_line (start 4.06 -3.22) (end 4.06 -1.75) (layer F.SilkS) (width 0.1)) - (fp_line (start 4.06 -3.22) (end 2.4 -3.22) (layer F.SilkS) (width 0.1)) - (fp_line (start -4.05 -3.21) (end -2.4 -3.21) (layer F.SilkS) (width 0.1)) - (fp_line (start -4.05 -3.2) (end -4.05 -1.75) (layer F.SilkS) (width 0.1)) - (fp_line (start 3.93 2.75) (end 3.93 -2.9) (layer F.Fab) (width 0.1)) - (fp_line (start -3.93 2.75) (end 3.93 2.75) (layer F.Fab) (width 0.1)) - (fp_text user %R (at 0.06 1.86) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -3.93 -2.34) (end -3.37 -2.9) (layer F.Fab) (width 0.1)) - (fp_line (start 3.93 -2.9) (end -3.37 -2.9) (layer F.Fab) (width 0.1)) - (fp_line (start -3.93 2.75) (end -3.93 -2.34) (layer F.Fab) (width 0.1)) - (fp_line (start 4.25 -3.75) (end 4.25 3) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.25 -3.75) (end 4.25 -3.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.25 3) (end 4.25 3) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.25 -3.75) (end -4.25 3) (layer F.CrtYd) (width 0.05)) - (pad 6 smd rect (at 1.2 0) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -1.2 0) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 3.2 -2.45) (size 1.6 1.4) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -3.2 -2.45) (size 1.6 1.4) (layers F.Cu F.Paste F.Mask)) - (pad 6 thru_hole oval (at -3.3 0) (size 0.9 1.6) (drill oval 0.5 1.2) (layers *.Cu *.Mask)) - (pad 6 thru_hole oval (at 3.3 0) (size 0.9 1.6) (drill oval 0.5 1.2) (layers *.Cu *.Mask)) - (pad 1 smd rect (at -1.3 -2.675) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -0.65 -2.675) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 1.3 -2.675) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 0.65 -2.675) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 0 -2.675) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) -) diff --git a/project_init_tool/KicED_libLinker.py b/project_init_tool/KicED_libLinker.py new file mode 100644 index 0000000..bc4b286 --- /dev/null +++ b/project_init_tool/KicED_libLinker.py @@ -0,0 +1,57 @@ +import os +import glob + +def getFootprinLibrarys(pathTofootprints): + cwd = os.getcwd() + os.chdir(footprintPath) + footprintList = [] + files = os.listdir() + + # append all .pretty folders + for f in files: + if f.endswith(".pretty"): + footprintList.append(f) + + os.chdir(cwd) + return footprintList + +def getSymbolsLibrarys(pathToSymbols): + search_pattern = os.path.join(pathToSymbols, "*.kicad_sym") + return glob.glob(search_pattern) + +pathToProjectFolder = input("enter path to KiCad project folder:") + +# move one directory back into the main KicED library folder +# https://stackoverflow.com/questions/12280143/how-to-move-to-one-folder-back-in-python +os.path.normpath(os.getcwd() + os.sep + os.pardir) + +cwd = os.getcwd() + +print(pathToProjectFolder) +print(cwd) + +# find common path +commonPath = os.path.commonprefix([cwd, pathToProjectFolder]) + +# KicED library paths +footprintPath = os.path.join(cwd, "footprints") +symbolsPath = os.path.join(cwd, "symbols") + +# create relative path from KiCad project and the KicED library +relative_path = os.path.relpath(cwd, pathToProjectFolder) +print(relative_path) + +baseRelativeBasePath = os.path.join("${KIPRJMOD}", relative_path) + +print(baseRelativeBasePath) + + +fps = getFootprinLibrarys(footprintPath) + +for f in fps: + print(f) + +sps = getSymbolsLibrarys(symbolsPath) + +for f in sps: + print(f) \ No newline at end of file diff --git a/project_init_tool/linkKicEDlib.py b/project_init_tool/linkKicEDlib.py new file mode 100644 index 0000000..c3efad6 --- /dev/null +++ b/project_init_tool/linkKicEDlib.py @@ -0,0 +1,23 @@ +import tkinter as tk +from tkinter import filedialog + +def select_folder(): + folder_path = filedialog.askdirectory() + folder_label.config(text="Selected Folder: " + folder_path) + +# Create the main window +root = tk.Tk() +root.title("KicED library linker") + +# Create a label to display the selected folder +folder_label = tk.Label(root, text="Selected KiCad project folder: ") +folder_label.pack(pady=10) + +# Create a button to open the file dialog +select_button = tk.Button(root, text="Select Folder", command=select_folder) +select_button.pack() + + +# Start the GUI application +root.mainloop() +