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.

Reply via email to