+Fortunately PCB already had a strong infrastructure supporting this idea.
+It has dynamic loadable plugins and the GUI and exporters are in separate
+HID modules. While working on pcb-gpmi and later pcb-rnd, I added the
+gpmi module as a separate plugin.
+
+In version 1.0.8 to 1.1.0 a cosiderable chunk of core code has been moved into
+core plugins. A core plugin is just a plugin that is
+maintained together with the core, in the same repository, still the code is
+somewhat detached from the core. More importantly, the user can choose, for
+each plugin, separately:
+
+module | size [sloc] | status | configure default | class | description
+
+
+ |
---|
autocrop | 157
+ | works
+ | buildin
+ | (feature)
+ | Reduce the board dimensions to just enclose the elements.
+ |
---|
autoplace | 617
+ | works
+ | buildin
+ | (feature)
+ | Automatically place elements.
+ |
---|
autoroute | 4341
+ | works
+ | buildin
+ | (feature)
+ | Automatically route selected or all rats. This is the original autorouter.
+ |
---|
boardflip | 132
+ | WIP
+ (doesn't update rtrees)
+ | disabled
+ | (feature)
+ | All objects on the board are up-down flipped.
+ |
---|
dbus | 486
+ | WIP
+ (needs to install the xml?)
+ | disabled
+ | (feature)
+ | Remote control PCB using DBUS.
+ |
---|
diag | 167
+ | works
+ | disabled
+ | (feature)
+ | Actions for pcb-rnd core diagnostics, intended for developers. These are not in core because end users normally don't need these. As a plugin, due to dynamic loading, it can be dropped on an existing pcb-rnd installation with minimal risk of scaring away a reproducible bug.
+ |
---|
distalign | 426
+ | works
+ | buildin
+ | (feature)
+ | Introducing Align() and Distribute(), which work much like the similarly named functions in Visio. Given that PCB does not have the concept of "first selected object" to draw on, the reference points can be selected by arguments.
+ |
---|
distaligntext | 465
+ | works
+ | buildin
+ | (feature)
+ | Same as distalign, operates on text objects.
+ |
---|
djopt | 2320
+ | works
+ | buildin
+ | (feature)
+ | Various board optimization algorithms.
+ |
---|
draw_fab | 257
+ | works
+ | buildin
+ | (feature)
+ | Draw the fab layer (for various exporters).
+ |
---|
export_bboard | 419
+ | WIP
+ | disabled
+ | export
+ | Export breadboard
+ |
---|
export_bom | 230
+ | works
+ | buildin
+ | export
+ | Export bom (Bill of Materials)
+ |
---|
export_dsn | 447
+ | Work-in-progress
+ | disable
+ | export
+ | Export specctra .dsn files
+ |
---|
export_dxf | 3999
+ | WIP
+ | disabled
+ | export
+ | Export dxf
+ |
---|
export_gcode | 2468
+ | works
+ | buildin
+ | export
+ | Export to gcode
+ |
---|
export_gerber | 989
+ | works
+ | buildin
+ | export
+ | Export to gerber
+ |
---|
export_ipcd356 | 467
+ | Work-in-progress
+ | disable
+ | export
+ | IPC-D-356 Netlist export.
+ |
---|
export_lpr | 104
+ | works
+ | buildin
+ | export
+ | Export to lpr (using export_ps to generate postscript)
+ |
---|
export_nelma | 678
+ | works
+ | buildin
+ | export
+ | Export to nelma (Numerical capacitance calculator)
+ |
---|
export_openscad | 1379
+ | WIP
+ | disabled
+ | export
+ | Export openscad
+ |
---|
export_png | 1119
+ | works
+ | buildin
+ | export
+ | Export to png, gif and jpeg
+ |
---|
export_ps | 1638
+ | works
+ | buildin
+ | export
+ | Export postscript or embedded postscript.
+ |
---|
export_stat | 258
+ | works
+ | buildin
+ | export
+ | Export various board statistics in lihata format
+ |
---|
export_svg | 566
+ | works
+ | buildin
+ | export
+ | Scalable Vector Graphics (SVG) exporter
+ |
---|
export_test | 257
+ | disabled
+ (work in progress)
+ | buildin
+ | export
+ | A thin layer of code to dump exporter calls for testing the HID exporter API.
+ |
---|
export_xy | 272
+ | works
+ | buildin
+ | export
+ | Export XY centroid element data for pick & place.
+ |
---|
fontmode | 165
+ | works
+ | buildin
+ | (feature)
+ | Font editing actions.
+ |
---|
fp_fs | 380
+ | works
+ | buildin
+ | fp
+ | Footprint: file system based implementation. Used to be called Newlib: load footprints from directories. Run external processes for the parametric footprints.
+ |
---|
fp_wget | 303
+ | works
+ | buildin
+ | fp
+ | Footprint: get static (file) footprints from the web, e.g. from http://gedasymbols.org
+ |
---|
gl | 588
+ | disabled
+ (pcb-rnd has no support for opengl.)
+ | disabled
+ | (feature)
+ | Common gl functions for hids.
+ |
---|
gpmi | 3056
+ | works
+ | buildin
+ (if gpmi is installed)
+ | (feature)
+ | Scriptable plugin system with about 10 scripting languages supported and dynamic load/unload of scripts that can manipulate the GUI, the board, can implement exporters, etc.
+ |
---|
hid_batch | 317
+ | works
+ | buildin
+ | hid
+ | HID without GUI; read actions from stdin.
+ |
---|
hid_gtk | 16254
+ | works
+ | buildin
+ | hid
+ | GUI: the GTK HID.
+ |
---|
hid_lesstif | 6917
+ | works
+ | buildin
+ | hid
+ | GUI: the lesstif HID.
+ |
---|
hid_remote | 1116
+ | WIP
+ | disable
+ | hid
+ | Remote access HID: implement a protocol and use it to relay between a core and a remote HID implementation.
+ |
---|
import_dsn | 115
+ | Work-in-progress
+ | disable
+ | import
+ | Import specctra .dsn files
+ |
---|
import_edif | 3624
+ | works
+ | buildin
+ | import
+ | Import plugin for netlists in the EDIF format.
+ |
---|
import_hyp | 1547
+ | WIP
+ | disable
+ | import
+ | Import plugin for hyperlynx geometry.
+ |
---|
import_netlist | 136
+ | works
+ | buildin
+ | import
+ | Import plugin for netlists in the classic pcb netlist format.
+ |
---|
import_sch | 302
+ | works
+ | buildin
+ | import
+ | Imports element and netlist data from the schematics (or some other source).
+ |
---|
io_kicad | 2971
+ | works
+ | buildin
+ | io
+ | Load and save the design and elements in Kicad's s-expression format - this is the new, currently preferred format in Kicad.
+ |
---|
io_kicad_legacy | 944
+ | works
+ | buildin
+ | io
+ | Export the design and elements in Kicad's legacy format.
+ |
---|
io_lihata | 1935
+ | works
+ | buildin
+ | io
+ | Load and save the design and elements in the lihata board format.
+ |
---|
io_pcb | 2172
+ | works
+ | buildin
+ | io
+ | Load and save the design and elements in the original pcb text format.
+ |
---|
jostle | 445
+ | works
+ | buildin
+ | (feature)
+ | Pushes lines out of the way.
+ |
---|
lib_gensexpr | 6
+ | works
+ | disabled
+ | (lib)
+ | S-expression parser lib
+ |
---|
lib_legacy_func | 63
+ | works
+ | buildin
+ | (lib)
+ | Random collection of old/obsolete (legacy) functions. 3rd party plugins may depend on them. This module implements C functions and variables and does not register actions or flags.
+ |
---|
loghid | 272
+ | WIP
+ | disabled
+ | (feature)
+ | Sits between a HID (or exporter) and the core and logs all core->plugin calls made through the HID structure.
+ |
---|
mincut | 904
+ | works
+ | buildin
+ | (feature)
+ | Use the minimal cut algorithm to indicate shorts: instead of highlighting two random pins/pads, try to highlight the least number of objects that connect the two networks.
+ |
---|
oldactions | 154
+ | works
+ | disabled
+ | (feature)
+ | Random collection of old/obsolete actions. Bell(): audible feedback; DumpLibrary(): print footprint library on stdout; a set of debug actions useful for writing pcb scripts: Debug(), DebugXY(), Return(). Old plugin actions to toggle or set settings that are now accessible via the unified config system (vendordrill, djopt)
+ |
---|
polycombine | 207
+ | works
+ | buildin
+ | (feature)
+ | The selected polygons are combined together according to the ordering of their points.
+ |
---|
polystitch | 184
+ | segfaults
+ | disable
+ | (feature)
+ | The polygon under the cursor (based on closest-corner) is stitched together with the polygon surrounding it on the same layer. Use with pstoedit conversions where there's a "hole" in the shape - select the hole.
+ |
---|
propedit | 772
+ | works
+ | buildin
+ | (feature)
+ | List and edit properties of a group of objects.
+ |
---|
puller | 1887
+ | works
+ | buildin
+ | (feature)
+ | Pull traces to minimize their length.
+ |
---|
query | 1834
+ | works
+ | buildin
+ | (feature)
+ | pcb-rnd query language: execute expressions on objects and rules for the programmed drc.
+ |
---|
renumber | 308
+ | works
+ | buildin
+ | (feature)
+ | Renumber elements (renaming them) and generate a text file for back annotation.
+ |
---|
report | 1019
+ | works
+ | buildin
+ | (feature)
+ | Report() and ReportObject() actions - print a report about design objects.
+ |
---|
rubberband_orig | 599
+ | works
+ | buildin
+ | (feature)
+ | The original rubberband code.
+ |
---|
shand_cmd | 211
+ | works
+ | buildin
+ | (feature)
+ | vi-like command shorthands (1..3 character long commands)
+ |
---|
smartdisperse | 172
+ | works
+ | buildin
+ | (feature)
+ | Improve the initial dispersion of elements by choosing an order based on the netlist, rather than the arbitrary element order. This isn't the same as a global autoplace, it's more of a linear autoplace. It might make some useful local groupings. For example, you should not have to chase all over the board to find the resistor that goes with a given LED.
+ |
---|
stroke | 135
+ | partially works (doesn't work with lesstif; works with the gtk hid, but there's no zoom bindings)
+ | disabled
+ | (feature)
+ | Gesture recognition with libstroke.
+ |
---|
teardrops | 226
+ | works
+ | buildin
+ | (feature)
+ | Draw teardrops on pins.
+ |
---|
toporouter | 6161
+ | fails
+ (infinite loop in gts)
+ | disabled
+ | (feature)
+ | Automatically route selected or all rats using a topological algorithm. This is the new autorouter from 2009.
+ |
---|
vendordrill | 516
+ | works
+ | buildin
+ | (feature)
+ | Vendor drill mapping.
+ |
---|
+
+