We’re using code to GetFields. From the demo project “flat_hierarchy.kicad_pro”, we can get the KiCAD netlist. The following is only part of the netlist file.
(comp (ref "U4")
(value "LT1373")
(footprint "Package_DIP:DIP-8_W7.62mm_LongPads")
(datasheet "http://www.google.com")
(fields
(field (name "Field4") "1111")
(field (name "Field5") "2222")
(field (name "Sim_Device") "R")
(field (name "Sim_Pins") "1 2"))
(libsource (lib "flat_hierarchy_schlib") (part "LT1373") (description ""))
(property (name "Field4") (value "1111"))
(property (name "Field5") (value "2222"))
(property (name "Sim_Device") (value "R"))
(property (name "Sim_Pins") (value "1 2"))
(property (name "Sheetname") (value "pic_programmer"))
(property (name "Sheetfile") (value "File: pic_programmer.kicad_sch"))
(sheetpath (names "/pic_programmer/") (tstamps "/00000000-0000-0000-0000-000048553e53/"))
(tstamps "00000000-0000-0000-0000-0000442a5e20"))
(libpart (lib "flat_hierarchy_schlib") (part "LT1373")
(fields
(field (name "Reference") "U")
(field (name "Value") "LT1373"))
(pins
(pin (num "1") (name "Vc") (type "input"))
(pin (num "2") (name "FB+") (type "input"))
(pin (num "3") (name "FB-") (type "passive"))
(pin (num "4") (name "S/S") (type "passive"))
(pin (num "5") (name "Vin") (type "power_in"))
(pin (num "6") (name "GND_S") (type "input"))
(pin (num "7") (name "GND") (type "input"))
(pin (num "8") (name "Vsw") (type "input"))))
The following code sym->GetFields could get the all fields of “comp” section. The Field4, Field5, Sim_Device, and Sim_Pins are in the “fields” part in the “comp” section; however, the ref, value, footprint, and datasheet are not in the “fields” part in the “comp” section.
SCH_SYMBOL* sym;
sym->GetFields(): field is Reference
sym->GetFields(): field is Value
sym->GetFields(): field is Footprint
sym->GetFields(): field is Datasheet
sym->GetFields(): field is Field4
sym->GetFields(): field is Field5
sym->GetFields(): field is Sim_Device
sym->GetFields(): field is Sim_Pins
The code sym->GetLibSymbolRef()->GetFields(fields_in_libpart) allways get the same four fields: Reference, Value, Footprint, Datasheet. However, Footprint and Datasheet are not in the “fields” part in the “libpart” section (Since there is a statement “if( !field->GetText().IsEmpty()” which keeps Footprint and Datasheet fields out due to they are empty. )
).
sym->GetLibSymbolRef()->GetFields(fields_in_libpart): field.GetName() is Reference
sym->GetLibSymbolRef()->GetFields(fields_in_libpart): field.GetFullText() is U?
sym->GetLibSymbolRef()->GetFields(fields_in_libpart): field.GetName() is Value
sym->GetLibSymbolRef()->GetFields(fields_in_libpart): field.GetFullText() is LT1373
sym->GetLibSymbolRef()->GetFields(fields_in_libpart): field.GetName() is Footprint
sym->GetLibSymbolRef()->GetFields(fields_in_libpart): field.GetFullText is
sym->GetLibSymbolRef()->GetFields(fields_in_libpart): field.GetName() is Datasheet
sym->GetLibSymbolRef()->GetFields(fields_in_libpart): field.GetFullText is
It seems that the results of the code are consistent with the symbol’s GUI content, at least for the SCH_SYMBOL’s GetFields().
After adding “MyAddedField” (We’re thinking this is LIB_SYMBOL’s field.), the new exported KiCAD’s netlist file is not updated with the new added “MyAddedField” field in “libpart” section.
I am comfused about the GetFields(…).
Our version info is as following.
Application: KiCad
Version: (6.99.0-2955-gb2a2d66005-dirty), debug build
Libraries:
wxWidgets 3.0.5
FreeType 2.10.4
HarfBuzz 2.7.4
FontConfig 2.13.1
libcurl/7.74.0 OpenSSL/1.1.1k zlib/1.2.11 brotli/1.0.9 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.3.0) libssh2/1.9.0 nghttp2/1.43.0 librtmp/2.3
Platform: Linux 5.10.0-9-amd64 x86_64, 64 bit, Little endian, wxGTK, gnome, wayland
Build Info:
Date: Sep 3 2022 00:08:21
wxWidgets: 3.0.5 (wchar_t,wx containers,compatible with 2.8) GTK+ 3.24
Boost: 1.74.0
OCC: 7.5.1
Curl: 7.74.0
ngspice: 31
Compiler: GCC 10.2.1 with C++ ABI 1014
Build settings:
KICAD_SPICE=ON
KICAD_STDLIB_DEBUG=OFF
KICAD_STDLIB_LIGHT_DEBUG=OFF
KICAD_SANITIZE_ADDRESS=OFF
KICAD_SANITIZE_THREADS=OFF