← Back to team overview

kicad-developers team mailing list archive

Re: New Pcbnew file format.

 

On 4/8/2012 12:38 PM, lajos kamocsay wrote:
> Hi Wayne-
> 
> 
> The new file format looks awesome. Very simple and readable.
> 
> Would it be possible to standardize the transformation data? Currently
> there seems to be a couple different formats, some examples:
> 
>  (draw line (pts xy(76.581 47.9425) xy(77.724 47.9425)) (layer 21)
> (width 0.127))
> 
>  (size 1.016 1.651)
> 
>  (at -1.524 0)
> 
>  (at (xyz 0 0 0))
>  (scale (xyz 0.17 0.16 0.16))
>  (rotate (xyz 0 0 0))
> 
> I think having a standard format would be very helpful for external
> utilities reading/writing kicad data, like:
> 
> (object
>  (position xyz(1, 1, 1))
>  (rotation xyz(0, 0, 0))
>  (scale xyz(1, 1, 1))
> )

Lajos,

Thank you for your comments.  I carried over the "at" token from the new
schematic and schematic library file formats.  For 2D transforms I want
to keep this notation so that it is the same between the schematic and
board file formats.  I'm fine with using a different notation for 3D
transforms.  My original though was just to use (scale X Y Z) since this
is inside a 3D object it may clear enough to the user that 3D transforms
require XYZ.

> 
> Or if you want shorter names, you could use the p/r/s letters for
> position/rotation/scale or t/s/r for translation/rotation/scale and v3
> for a 3d vector:
> 
> (object
>  (t v3(1, 1, 1))
>  (r v3(0, 0, 0))
>  (s v3(1, 1, 1))
> )

I want to avoid abbreviations that are not obvious.  The file format
must be human readable not developer readable.  Most of the developers
will know what t/r/s means but a normal user shouldn't be expected to
wade thought the source code to find out what t/r/s means.  The goal is
the minimum verbosity to achieve human readability.

Thanks,

Wayne

> 
> Although nowadays storage is usually not an issue, and the file can be
> optionally compressed with zlib. So probably the more verbose names
> are better. One of the small boards I saved was 28k in the old format,
> 52k with s-expr, 6k s-expr compressed.
> 
> Another alternative would be a 3x3 matrix:
> 
> (object
>  (transform matrix(1, 1, 1, 0, 0, 0, 1, 1, 1))
> )
> 
> 
> 
> Thanks-
> -lajos
> 
> 
> 
> 
> On Sat, Apr 7, 2012 at 2:58 PM, Miguel Angel Ajo Pelayo
> <miguelangel@xxxxxxx> wrote:
>> nice!!!, I will start trying it.
>>
>>
>> 2012/4/7 Wayne Stambaugh <stambaughw@xxxxxxxxxxx>
>>>
>>> Oops!  To be able to save to the new file format you must add
>>> -DUSE_PCBNEW_SEXPR_FILE_FORMAT=ON and -DUSE_PCBNEW_NANOMETRES=ON when
>>> invoking CMake in order to build the new code.
>>>
>>> On 4/7/2012 2:09 PM, Wayne Stambaugh wrote:
>>>> It took long than I anticipated (doesn't always?) but I just committed
>>>> the code to allow saving board files to the new s-expression based file
>>>> format.  I would like as many folks as possible to save their favorite
>>>> board file using File->Save As to the new format and take a look at the
>>>> result.  My goal is to get the final file format nailed down as quickly
>>>> as possible.  There are few caveats:
>>>>
>>>> * I still have to convert angles to degrees from the current tenths of
>>>> degrees so please ignore the fact that 270° is saved as 2700°.  This fix
>>>> is coming soon.
>>>>
>>>> * The lead developers have decided to drop support for the old segment
>>>> filled zones (SEGZONES) which have not been used in quite some time.  I
>>>> will be adding a dialog warning the user that they will need to refill
>>>> their zones using the current polygon filling.  I doubt this will effect
>>>> very many users but I could be wrong.
>>>>
>>>> * I rearranged the object ordering slightly compared to the current file
>>>> format.  I moved the graphic items (items with no net connection) before
>>>> the modules.  This way all of the net connectable objects (modules,
>>>> traces, zones, etc.) will be grouped together.
>>>>
>>>> Please take some time to look over the new format.  If you find a token
>>>> (key word) that is not clear, let me know so we can choose names that
>>>> are as human readable as possible.  Please keep in mind that the file
>>>> size is going to increase dramatically over the current format so try to
>>>> keep names as brief as possible while still maintaining readability.
>>>> Also, if you find any indentation or other formatting errors, let me
>>>> know so I can fix it.  I will be working on reading the new file format
>>>> over the next few days (weeks?) so I would like to wrap up the file
>>>> format definition in a reasonable amount of time.  Thanks in advance for
>>>> you help.
>>>>
>>>> Wayne
>>>>
>>>>
>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>> More help   : https://help.launchpad.net/ListHelp
>>>>
>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~kicad-developers
>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>>
>>
>> --
>>
>> Miguel Angel Ajo Pelayo
>> http://www.nbee.es
>> +34 636 52 25 69
>> skype: ajoajoajo
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
>>
> 



Follow ups

References