If the Ucamco specification calls out JSON as the file format, then we should respect the JSON file formatting regardless of whether it's ugly or not.
Cheers, Wayne On 12/28/19 9:02 AM, Jon Evans wrote: > I understand that point of view, but how do we determine what is > "reasonable"? > The Ucamco spec does not state anything about it, they just refer to the > JSON spec. > If we were to follow the JSON spec, we would not round or truncate. > > So I guess what I am asking is, if people think it's important for > Gerber job files to be human-readable and look "reasonable", can we make > some effort to get that into the spec, so that all software will do it > the same way and it won't be a case of KiCad doing one thing and other > tools doing a different thing, because there is no standard? > > -Jon > > On Sat, Dec 28, 2019 at 8:58 AM jp charras <jp.char...@wanadoo.fr > <mailto:jp.char...@wanadoo.fr>> wrote: > > Le 28/12/2019 à 14:37, Mark Roszko a écrit : > > But that 1.600 is not a double/floating number, it truncated from the > > double of 1.600000000000000088817841970012523233890533447265625 > > > > The entire complaint I believe is when it comes to serializing to JSON > > in 99% of software of all languages, you do not apply custom > > formatting to convert doubles to having less digits, you literally > > store the data type as is for what's considered a JSON "number". > > Otherwise we should be storing the float as string and applying the > > custom formatting in the conversion to string. > > OK. > > I am thinking we have to use a reasonable and readable notation (like in > all our kicad files). > > To encode a board thickness, 1.600 is readable. > 1.600000000000000088817841970012523233890533447265625 is just ridiculous > (for any value in a config file). > > > > > On Sat, Dec 28, 2019 at 8:01 AM jp charras <jp.char...@wanadoo.fr > <mailto:jp.char...@wanadoo.fr>> wrote: > >> > >> Le 24/12/2019 à 21:43, Jon Evans a écrit : > >>> OK, so both the JSON format itself and the Ucamco gerber format > (which > >>> is not necessarily the same as the job file format, but hey) specify > >>> storing doubles. > >>> But, the examples in the Ucamco doc, and KiCad itself, do not > store doubles. > >>> > >>> I have to imagine that the gerber job file format is so new that it > >>> isn't entrenched in anyone's workflow yet, and if it is, they > are not > >>> relying on this quirk of KiCad's implementation (but anything is > possible). > >>> The only way to get KiCad's behavior is through manual formatting of > >>> JSON, so anyone who writes software that parses job files > through a JSON > >>> parsing library is going to have those values "upcasted" anyway. > >>> > >>> My personal opinion is that we should bite the bullet and change the > >>> behavior to comply with the standard (i.e. store doubles), and also > >>> suggest to Ucamco that they revise the job file spec to be more > explicit > >>> about this. > >>> > >>> Perhaps JP should weigh in on this as well. > >>> > >>> -Jon > >> > >> Sorry for the delay. > >> > >> I am unsure to understand the meaning of > >> "KiCad itself do not store doubles" > >> (in gerber job files) > >> > >> A line like: > >> "BoardThickness": 1.600, > >> > >> stores a double: > >> AFAIK, "1.600" is of course a floating number, and also a > double, not > >> an integer. > >> > >> In job files, most of values (board sizes, layers thickness, > clearances) > >> are "mechanical" values. > >> > >> A reasonable precision is the micron for this kind of parameters. > >> > >> No need to use nanometers. > >> So values are written using 3 digits for the mantissa. > >> > >> Using the notation: > >> "BoardThickness": 1600e-3, > >> is perfectly valid, but useless and less readable. > >> > >> FYI, using 6 digits (1 nanometer) in other Gerber files is needed to > >> avoid coordinates truncation. > >> > >> 3 digits is certainly enough to fabricate a board. > >> Unfortunately, truncation slightly modify polygon coordinates, > and this > >> truncation can (and frequently does) create self intersecting > polygons. > >> (self intersecting polygons are illegal). > >> > >> -- > >> Jean-Pierre CHARRAS > >> > >> _______________________________________________ > >> Mailing list: https://launchpad.net/~kicad-developers > >> Post to : kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net> > >> Unsubscribe : https://launchpad.net/~kicad-developers > >> More help : https://help.launchpad.net/ListHelp > > > > > > > > > -- > Jean-Pierre CHARRAS > > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net> > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp > > > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : kicad-developers@lists.launchpad.net > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp > _______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp