Hi Rafał, Thanks for your reply.
> Guys, have you ever considered going to "virtual dimensions"? I think it's not doable. Because you need to show the same thing with different units when using pcb editor. For example: 1. Users want to change the display unit from one to another. 2. Imported dxf shapes with specified unit Sincerely Liang On Tue, 26 Nov 2024 at 13:06, Rafał Pietrak <[email protected]> wrote: > 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 X: 200 in. x 200 in = 5 meter * 5 meter; > > https://www.cadence.com/en_US/home/tools/pcb-design-and-analysis/ > > orcad.html#pcb-layout <https://www.cadence.com/en_US/home/tools/pcb- > > design-and-analysis/orcad.html#pcb-layout> > > Altium Designer: 200 in. x 200 in = 2.5 meter * 2.5 meter > > 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 <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/> > > 2.2 Using Binary coded-decimal, > > https://stackoverflow.com/questions/2624973/why-doesnt-my-processor- > > 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. > > * > > * > > > > Sincerely > > Liang > > > > On Tue, 26 Nov 2024 at 02:02, Mark Roszko <[email protected] > > <mailto:[email protected]>> wrote: > > > > Floats are not accurate beyond 6-7 digits and worse, floating point > > behavior is actually not fully well defined. You can actually get > > different quirks depending on platform, compiler and arch. Though > > generally the risk isn't in the arithmetic but supporting functions > > that are part of libc. > > > > >And why did Kicad choose integer as internal measurement > resolution? > > > > Using integers is standard programming behavior for applications > > that want well defined and bounded mathematical behavior. > > > > When you do floating point math, even if we ignore the inaccurate > > power part of the number, that error still sits in the number. When > > you carry out sufficient and numerous operations using numbers that > > carry these not used digits, they can actually creep in and start > > affecting the digits you do care about and cause errors. > > > > > > >Last, so that means there is no way to handle this issue? > > > > > > We have come to the conclusion that if somebody needs PCB designs > > larger than 4 meters, which is already an ridiculous size. They need > > to discuss with us the use case which is already going to be > > ridiculously niche for that one person because there is no standard > > PCB manufacturing equipment for a board of that size. > > > > > > On Mon, Nov 25, 2024, 8:01 AM Liang Jia <[email protected] > > <mailto:[email protected]>> wrote: > > > > Hi Mark, > > > > Thanks for your email. > > > > Could you please explain more about the relation between "Change > > 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 <[email protected] > > <mailto:[email protected]>> 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 > > <[email protected] > > <mailto:[email protected]>> 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 > > <https://gitlab.com/kicad/code/kicad/-/issues/12392> > > > > 2. From the Kicad document: > > The internal measurement resolution of all objects in > > 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 [email protected] > > <mailto:[email protected]>. > > To view this discussion visit https://groups.google.com/ > > a/kicad.org/d/msgid/devlist/CAE0Ak8bd%3DgDwW%3DDWVXH- > > TKj%3Dr4nsgW370aNqB6PbP7T8b2QU6A%40mail.gmail.com > > <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 [email protected] > > <mailto:[email protected]>. > > To view this discussion visit https://groups.google.com/a/ > > kicad.org/d/msgid/devlist/ > > 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 [email protected] > > <mailto:[email protected]>. > > To view this discussion visit https://groups.google.com/a/ > > kicad.org/d/msgid/devlist/ > > 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 [email protected] > > <mailto:[email protected]>. > > To view this discussion visit https://groups.google.com/a/kicad.org/ > > d/msgid/devlist/ > > 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 [email protected] > > <mailto:[email protected]>. > > To view this discussion visit https://groups.google.com/a/kicad.org/d/ > > 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>. > > -- > 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/53def67c-3503-4980-aa8f-ae33764ce9c7%40electric-sheep.eu > . > -- 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/CAE0Ak8aBa0Zt0G%2BKRfq4ZRMT9WiFVZO%2BBGHVdGLHWDJ%3D8f%2BzEQ%40mail.gmail.com.
