Hi!

Looking at the current code I see:

1. HPGL is gone

2. Full sketch is gone (only sketch pads)

My remaining doubt: What about SetSketchPadLineWidth? Will be added to this dialog to avoid using a global (and hidden) option?

Also: the command line can "sketch" DNP components ... should this also use SetSketchPadLineWidth? Which is the GUI counterpart for this option?

Regards, Salvador

On 7/5/25 14:07, Salvador E. Tropea wrote:

Hi Jon!

PS output is handled by the same code as PDF and SVG (is the base class), Is this correct?

Also: A lot of laser printers has native PS support and still working, transferring toner to a PCB using heat is a popular DIY mechanism, and avoiding PDF -> PS manipulation to send the PS directly to the printer is better.

About HPGL (real pen) the driver is hardly broken, the code assumes you can draw a pad and then draw its hole as a white object, which is conceptually wrong when applied to the HPGL driver ... well ... unless you add pen control and include a liquid paper pen in your plotter :-)))

Regards, Salvador

On 7/5/25 13:50, Jon Evans wrote:
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]>
        <mailto:[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/1885and
        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

        KiCad Services Corporation Logo
        Seth Hillbrand
        *Lead Developer*
        +1-530-302-5483‬
        Long Beach, CA
        www.kipro-pcb.com
        <https://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/13957as
            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
            [email protected]
            <mailto:devlist%[email protected]>.
            To view this discussion
            
visithttps://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 [email protected].
        To view this discussion
        
visithttps://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 [email protected].
        To view this discussion
        
visithttps://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 [email protected].
        To view this discussion
        
visithttps://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 <https://groups.google.com/a/kicad.org/d/msgid/devlist/CA%2BqGbCA7Ts_kmqJ5MLkbatvda%2By2uprdV7cUnvNOT9AJ_xDWYg%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/5804b8f7-186e-4f61-a30f-7155af1855e0%40inti.gob.ar <https://groups.google.com/a/kicad.org/d/msgid/devlist/5804b8f7-186e-4f61-a30f-7155af1855e0%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/a9245660-6f20-41b2-9efc-b04b8f75c81b%40inti.gob.ar.

Reply via email to