Guys, have you ever considered going to "virtual dimensions"?
What I mean here is that the entire design (that is the PCB of course,
not the SCH) is based on an integer grid like "natural numbers indices
to locations", while the grid size is provided for the entire PCB as a
single float?
Consequently, the current 32bit integers stay as they are, only their
meaning changes. They would no longer mean "mm" (or whatever
"physical"), but just "indecies". "Physical sizes" would emerge only
when pcb get converted to production (gerber?) files ... or whenever
user puts in new constraints. The later naturally should be accepted in
physical dimensions as they are specified by fabs, but for the design
within KiCAD they should be converted to "grid size" based on current
grid size. Same goes for shapes libraries, but I think its doable.
Such approach would introduce a "one time rounding errors" to the
design, but since this is really a "one time event" it does not bare any
cumulative effects, so it shouldn't matter at all.
-R
On 26.11.2024 04:25, Liang Jia wrote:
> Hi Mark and Seth,
>
> Thanks for your reply.
>
> Yes, you're right, it will lose some precision when using double.
>
> Just curious, I did some search online.
> *1. I found that the key players in the PCB market still have limits.*
> orcad.html#pcb-layout <
https://www.cadence.com/en_US/home/tools/pcb-
> design-and-analysis/orcad.html#pcb-layout>
> which-objects-should-not-be-placed <
https://www.altium.com/
> documentation/knowledge-base/altium-designer/indicate-visual-cues-at-
> the-coordinate-limit-of-pcb-design-space-beyond-which-objects-should-
> not-be-placed>
> Allegro: I can't find any detail information, but I tried the software,
> it seems still have limit. *Anyone know the board size limit for Allegro?*
> *
> *
> *2. If we really want to solve this problem, there are options below.*
> 2.1 Using software integer library, such as GMP;
> We can give an option to the user, let the user choose to enable
> it or not.
> If enabled, Kicad can support a bigger board size, but software
> will slow;
> If enabled, Kicad runs as usual.
> **
https://gmplib.org/ <
https://gmplib.org/>
> have-built-in-bigint-support <
https://stackoverflow.com/
> questions/2624973/why-doesnt-my-processor-have-built-in-bigint-support>
>
https://en.wikipedia.org/wiki/Binary-coded_decimal <https://
>
en.wikipedia.org/wiki/Binary-coded_decimal>
> 2.3 *Give the control of precision and board size to the user.*
> If a user wants to have a smaller board size, he/she will have
> more precision location and something else;
> If a user wants to have a bigger board size, he/she will have
> less precision location and something else;
>
> *@Mark what's your opinion? *
> *
> *
> *@Seth,
> *
> >Addressing this means reworking our internal coordinate system
> Could you please kindly give me some location for those codes? so I can
> dig into it.
> *
> *
> the measurement store from 32-bit to *64-bit*" and "128-bit
> integer math support in processors"?
> And why did Kicad choose integer as internal measurement resolution?
>
> >mm is not adequate to express the resolution of position data
> required for a board design.
> How about this? use mm for internal measurement resolution, but
> use nanometer or *double(instead of integer)* for board design.
>
>
> Last, so that means there is no way to handle this issue?
>
> On Mon, 25 Nov 2024 at 19:21, Mark Roszko <
mark....@gmail.com
> <mailto:
mark....@gmail.com>> wrote:
>
> >This means it is possible to create boards up to
> approximately 4 meters by 4 meters
>
> Yes, KiCad is limited to 4x4 meter boards currently.
>
> > Change the measurement store from 32-bit to 64-bit, so
> Kicad can support a larger board.
>
> This is not an easy task in the slightest. Specifically
> because we can't get 128-bit integer math support in
> processors, and many compilers do not support 128-bit
> integers. I think gcc has some experimental support.
>
> > Change the resolution of all objects to mm
>
> mm is not adequate to express the resolution of position
> data required for a board design.
>
>
>
> Basically the bug here is we simply do not tell the users
> the DXF is beyond our board support limit.
>
>
> On Mon, Nov 25, 2024 at 5:07 AM Liang Jia
> <
lantian...@gmail.com
> <mailto:
lantian...@gmail.com>> wrote:
>
> Hi All,
>
> I am writing to inquire about the challenges we are
> facing when importing DXF files which contain large
> numbers into our system.
>
> I have noticed that when the number exceeds a certain
> threshold(such as 4437 mm), the import process results
> in an int overflow error.
>
> I did the search below:
> 1. Found that there was a ticket to track it, but it
> seems *it still opens*.
>
https://gitlab.com/kicad/code/kicad/-/issues/12392
> KiCad is *1 nanometer*, and measurements are stored as
> *32-bit integers*. This means it is possible to create
> boards up to approximately 4 meters by 4 meters
> I think the *root cause* is here: Kicad tried to convert
> the DXF number into nanometer, but those numbers
> exceeded the limit of integer.
>
> Questions:
> 1. Is there any workaround for this case, and let Kicad
> import those files successfully?
> 2. If I want to fix ticket 12392, what should I do?
> Change the measurement store from 32-bit to 64-bit,
> so Kicad can support a larger board.
> Change the resolution of all objects to mm
>
> Looking forward to any comment or workaround.
>
> Sincerely
> Liang
>
> --
> 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
devlist+u...@kicad.org
> <mailto:
devlist+u...@kicad.org>.
> <
https://groups.google.com/a/kicad.org/d/msgid/devlist/
> CAE0Ak8bd%3DgDwW%3DDWVXH-
> TKj%3Dr4nsgW370aNqB6PbP7T8b2QU6A%
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
devlist+u...@kicad.org
> <mailto:
devlist+u...@kicad.org>.
> CAJjB1qKoN689BoyB1uWpWYmDCpbaCRKCyW2qmnBOoG5Au_Nnfg%
40mail.gmail.com <
https://groups.google.com/a/kicad.org/d/msgid/devlist/CAJjB1qKoN689BoyB1uWpWYmDCpbaCRKCyW2qmnBOoG5Au_Nnfg%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
devlist+u...@kicad.org
> <mailto:
devlist+u...@kicad.org>.
> CAE0Ak8bmAyB7ciCe6nrps8gw0meXgaj25r5Zq-
> o2Z9x_-8CFDA%
40mail.gmail.com <
https://groups.google.com/a/
>
kicad.org/d/msgid/devlist/
> CAE0Ak8bmAyB7ciCe6nrps8gw0meXgaj25r5Zq-
> o2Z9x_-8CFDA%
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
devlist+u...@kicad.org
> <mailto:
devlist+u...@kicad.org>.
> CAJjB1qLDDND2JZpaBCOHZpoz9HvsVF%2Brn%3D5nSGAQVDzyrFFRBA%
40mail.gmail.com <
https://groups.google.com/a/kicad.org/d/msgid/devlist/CAJjB1qLDDND2JZpaBCOHZpoz9HvsVF%2Brn%3D5nSGAQVDzyrFFRBA%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
devlist+u...@kicad.org
> <mailto:
devlist+u...@kicad.org>.
> msgid/devlist/CAE0Ak8awnYeEqbpz0SwNc7wAf_hmS1ybhDWNbRuyr7efEPUf-
> w%
40mail.gmail.com <
https://groups.google.com/a/kicad.org/d/msgid/
> devlist/CAE0Ak8awnYeEqbpz0SwNc7wAf_hmS1ybhDWNbRuyr7efEPUf-
> w%
40mail.gmail.com?utm_medium=email&utm_source=footer>.