For the sake of argument, I would propose removing pen-plotter specific stuff in V10 and putting no effort into supporting it in CLI and API in V9.
I would be open to hearing about why this is actually important to people, but for the moment it just seems like an extra burden on development for a tiny fraction of users, and I've never heard of HPGL or PS formats actually being used in industry when it comes to PCB design software exports. Users who *do* have a pen plotter also probably have other software that can convert one of our actually widely-used formats (like DXF) as required. -Jon On Wed, May 7, 2025 at 12:27 PM Jeff Young <[email protected]> wrote: > To the extent that you’d be willing to remove an existing feature? (Which > is what I’m suggesting.) > > Or just to not bother fixing the current warts? > > On 7 May 2025, at 17:00, Jon Evans <[email protected]> wrote: > > I would be in favor of us focusing on the kinds of outputs the vast > majority of users actually need: Interchange formats with other software, > not pen plotters. > > On Wed, May 7, 2025 at 11:55 AM Jeff Young <[email protected]> wrote: > >> Hmmm… there are fundamental differences in the code between Plot Mode and >> DXF’s outline mode. I’m not sure what they amount to (or if they’re only >> historical). >> >> But I do not think we should be using Board Defaults for any of these >> things. Those are only queried when creating new objects; they’re not >> “hot” properties. >> >> Maybe this is all akin to fiducials, and should just be gotten rid of. >> It is pretty hard to imagine someone using a pen-based plotter…. >> >> (And it would be great to get rid of Plot Mode, as there’s a lot of code >> to implement it. We’d just need to keep the part for “sketch pads on fab >> layers”, and then decide how (or if) to control the pen width there.) >> >> On 7 May 2025, at 13:29, Salvador E. Tropea <[email protected]> wrote: >> >> Hi Jeff! >> On 7/5/25 08:54, Jeff Young wrote: >> >> Only DXF supports the general “sketch all items”. The GUI does not allow >> setting the sketch line width. >> >> But Postscript and HPGL has "Plot mode" enabled, and you can select >> "Sketch". >> >> Which makes me think that DXF should be more consistent and move its >> option to "Plot mode" >> >> >> Only HPGL supports setting the default line width in the GUI. >> >> >> But here the concept is different. This is the physical size of the pen, >> but you might want to make traces wider than this, which won't be achieved >> changing this parameter. >> >> >> It does not support “sketch all items”. >> >> >> It allows choosing "Plot mode" == Sketch, which is really important here >> because when you use a real plotter (I wonder if anybody still uses it) you >> don't want to fill the polygons (wasting your pen too fast). >> >> >> All formats now support sketching for pads. HPGL uses the default line >> width; Gerber uses 0.1mm; all others use a hairline at 1200dpi (0.0212mm). >> >> >> But this isn't what the code is trying to do, as I posted before. This is >> what we get. >> >> >> I’m not sure we need user control over it, but the discrepancy between >> Gerber and the others seems quite large. >> >> >> But KiCad already has a setting for this in File|Board Settings ...|Text >> & Graphics|Defaults. The "Line Thickness" for "Fab Layers". >> >> This is what the code is trying to use, and failing as I explained. >> >> And this was added for this, as Seth referenced in the "issues" >> >> >> (Note that the hairline at 1200dpi stems from algorithmic safety: one of >> PS/PDF/SVG will blow up if you give it 0 line widths, though I can’t >> remember which.) >> >> >> BTW I remember that using this width made the printed stuff annoying >> because this is too fine. >> >> >> Regards, Salvador >> >> >> >> Cheers, >> Jeff. >> >> >> On 6 May 2025, at 17:57, 'Seth Hillbrand' via KiCad Developers >> <[email protected]> <[email protected]> wrote: >> >> This setting is pretty deep into the weeds. If we do decide that we >> should keep it (and make it work), I don't think that we should be exposing >> it into the cli as a flag without defining our use case for it. >> >> Looking at the bug reports from where it was implemented ( >> https://gitlab.com/kicad/code/kicad/-/issues/1885 and >> https://gitlab.com/kicad/code/kicad/-/issues/2274), neither seems to >> require setting the trace width. I'd suggest that we remove the >> non-functional feature barring a well-defined need. >> >> Seth >> >> [image: KiCad Services Corporation Logo] >> Seth Hillbrand >> *Lead Developer* >> +1-530-302-5483 >> Long Beach, CA >> www.kipro-pcb.com [email protected] >> >> >> On Tue, May 6, 2025 at 5:59 AM Salvador E. Tropea <[email protected]> >> wrote: >> >>> Hi All! >>> >>> I'm trying to make "kicad-cli pcb export PLOTTER" as functional as the >>> Python API, which IMHO is needed before moving to the inter-process API. >>> >>> Two years ago I opened >>> https://gitlab.com/kicad/code/kicad/-/issues/13957 as a suggestion by >>> @craftyjon >>> >>> As some functionality remains unimplemented I'm submitting patches to >>> fix them (PS and HPGL support already merged, scale setting waiting for >>> approval) >>> >>> One missing functionality is the equivalent to SetSketchPadLineWidth, I >>> have working code that implements it, but I'm having some doubts. >>> >>> Looking at the code I see it was intended to be useful, but from what I >>> see it never worked. >>> >>> I tried it from the Python API using KiCad 6, 7, 8 and 9 without success. >>> >>> The code does: >>> >>> ``` >>> >>> if( aPlotMode == SKETCH ) >>> m_plotter->SetCurrentLineWidth( GetSketchPadLineWidth(), >>> &metadata ); >>> >>> ``` >>> >>> >>> https://gitlab.com/kicad/code/kicad/-/blob/master/pcbnew/plot_brditems_plotter.cpp?ref_type=heads#L279-280 >>> >>> This in BRDITEMS_PLOTTER::PlotPad >>> >>> Then the code plots the pad calling FlashPad* but when you look at its >>> implementation for the PS/PDF/SVG all these functions does something >>> like this: >>> >>> ``` >>> >>> if( aTraceMode == FILLED ) >>> SetCurrentLineWidth( 0 ); >>> else >>> SetCurrentLineWidth( USE_DEFAULT_LINE_WIDTH ); >>> >>> ``` >>> >>> >>> https://gitlab.com/kicad/code/kicad/-/blob/master/common/plotters/PS_plotter.cpp?ref_type=heads#L147-150 >>> >>> Which defeats the caller intention. IMHO the else part should be removed. >>> >>> I removed them and I managed to make it work. >>> >>> The GUI dialog can't set it directly, but is controlled by: >>> >>> ``` >>> >>> m_plotOpts.SetSketchPadLineWidth( >>> board->GetDesignSettings().GetLineThickness( F_Fab ) ); >>> >>> ``` >>> >>> So I see it was intended to work, but never tested. >>> >>> My questions are: >>> >>> 1. Should I try to fix it? >>> >>> 2. Should we change the drivers so USE_DEFAULT_LINE_WIDTH uses a default >>> >>> that can be set from the callers? Currently this default is driver >>> specific and usually "the smallest possible" >>> >>> 3. What about other sketch modes? I.e. the plot dialog allows to set >>> Postscript in sketch mode ... but the BRDITEMS_PLOTTER::PlotPad code >>> currently assumes that SKETCH == SketchPadsOnFabLayers ... What about >>> Postscript and HPGL? (BTW HPGL is full of bugs, some of them really >>> complex to address) >>> >>> Regards, Salvador >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "KiCad Developers" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion visit >>> https://groups.google.com/a/kicad.org/d/msgid/devlist/3db8d9c0-428b-4e34-9b0f-5904395b5478%40inti.gob.ar >>> . >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "KiCad Developers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion visit >> https://groups.google.com/a/kicad.org/d/msgid/devlist/CAFdeG-p9t-8pSK0Kc-rG4QjhKOfZqaG-rae6y7VwaL0-JPt7Xw%40mail.gmail.com >> <https://groups.google.com/a/kicad.org/d/msgid/devlist/CAFdeG-p9t-8pSK0Kc-rG4QjhKOfZqaG-rae6y7VwaL0-JPt7Xw%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "KiCad Developers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion visit >> https://groups.google.com/a/kicad.org/d/msgid/devlist/8D7D94DC-182E-4B42-829C-E3E53F67D78B%40rokeby.ie >> <https://groups.google.com/a/kicad.org/d/msgid/devlist/8D7D94DC-182E-4B42-829C-E3E53F67D78B%40rokeby.ie?utm_medium=email&utm_source=footer> >> . >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "KiCad Developers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion visit >> https://groups.google.com/a/kicad.org/d/msgid/devlist/06e918ec-96d5-4200-b731-2b13934867ba%40inti.gob.ar >> <https://groups.google.com/a/kicad.org/d/msgid/devlist/06e918ec-96d5-4200-b731-2b13934867ba%40inti.gob.ar?utm_medium=email&utm_source=footer> >> . >> >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "KiCad Developers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion visit >> https://groups.google.com/a/kicad.org/d/msgid/devlist/2C921F9A-74D8-451A-BAEA-4CAB44EC3B0F%40rokeby.ie >> <https://groups.google.com/a/kicad.org/d/msgid/devlist/2C921F9A-74D8-451A-BAEA-4CAB44EC3B0F%40rokeby.ie?utm_medium=email&utm_source=footer> >> . >> > > -- > You received this message because you are subscribed to the Google Groups > "KiCad Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion visit > https://groups.google.com/a/kicad.org/d/msgid/devlist/CA%2BqGbCBmU%2BdGra4w3_EzVav8Vp5OF2gbymifjP7MUU6B1BBfPg%40mail.gmail.com > <https://groups.google.com/a/kicad.org/d/msgid/devlist/CA%2BqGbCBmU%2BdGra4w3_EzVav8Vp5OF2gbymifjP7MUU6B1BBfPg%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > > -- > You received this message because you are subscribed to the Google Groups > "KiCad Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion visit > https://groups.google.com/a/kicad.org/d/msgid/devlist/286C2A32-8A05-42F4-9022-00926C14AAF8%40rokeby.ie > <https://groups.google.com/a/kicad.org/d/msgid/devlist/286C2A32-8A05-42F4-9022-00926C14AAF8%40rokeby.ie?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "KiCad Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/a/kicad.org/d/msgid/devlist/CA%2BqGbCA7Ts_kmqJ5MLkbatvda%2By2uprdV7cUnvNOT9AJ_xDWYg%40mail.gmail.com.
