@@ -13,6 +13,7 @@ import {
1313 Stroke ,
1414 TitleBlock ,
1515 expand_text_vars ,
16+ EmbeddedFile ,
1617 StrokeParams ,
1718 type HasNetName ,
1819 type HasUniqueID ,
@@ -34,7 +35,11 @@ export class KicadPCB {
3435 project ?: Project ;
3536 version : number ;
3637 generator ?: string ;
37- general ?: { thickness : number } ;
38+ generator_version ?: string ;
39+ general ? = {
40+ thickness : 1.6 ,
41+ legacy_teardrops : false ,
42+ } ;
3843 paper ?: Paper ;
3944 title_block = new TitleBlock ( ) ;
4045 setup ?: Setup ;
@@ -47,6 +52,8 @@ export class KicadPCB {
4752 vias : Via [ ] = [ ] ;
4853 drawings : Drawing [ ] = [ ] ;
4954 groups : Group [ ] = [ ] ;
55+ embedded_fonts : boolean = false ;
56+ embedded_files : EmbeddedFile [ ] = [ ] ;
5057
5158 constructor (
5259 public filename : string ,
@@ -59,7 +66,13 @@ export class KicadPCB {
5966 P . start ( "kicad_pcb" ) ,
6067 P . pair ( "version" , T . number ) ,
6168 P . pair ( "generator" , T . string ) ,
62- P . object ( "general" , { } , P . pair ( "thickness" , T . number ) ) ,
69+ P . pair ( "generator_version" , T . string ) ,
70+ P . object (
71+ "general" ,
72+ { } ,
73+ P . pair ( "thickness" , T . number ) ,
74+ P . pair ( "legacy_teardrops" , T . boolean ) ,
75+ ) ,
6376 P . item ( "paper" , Paper ) ,
6477 P . item ( "title_block" , TitleBlock ) ,
6578 P . list ( "layers" , T . item ( Layer ) ) ,
@@ -88,6 +101,8 @@ export class KicadPCB {
88101 P . collection ( "drawings" , "gr_rect" , T . item ( GrRect , this ) ) ,
89102 P . collection ( "drawings" , "gr_text" , T . item ( GrText , this ) ) ,
90103 P . collection ( "groups" , "group" , T . item ( Group ) ) ,
104+ P . pair ( "embedded_fonts" , T . boolean ) ,
105+ P . list ( "embedded_files" , T . item ( EmbeddedFile ) ) ,
91106 ) ,
92107 ) ;
93108
@@ -854,6 +869,8 @@ export class Footprint implements HasUniqueID {
854869 #pads_by_number = new Map < string , Pad > ( ) ;
855870 zones : Zone [ ] = [ ] ;
856871 models : Model [ ] = [ ] ;
872+ embedded_fonts : boolean = false ;
873+ embedded_files : EmbeddedFile [ ] = [ ] ;
857874 #bbox: BBox ;
858875
859876 constructor (
@@ -911,6 +928,8 @@ export class Footprint implements HasUniqueID {
911928 P . collection ( "zones" , "zone" , T . item ( Zone , this ) ) ,
912929 P . collection ( "models" , "model" , T . item ( Model ) ) ,
913930 P . collection ( "pads" , "pad" , T . item ( Pad , this ) ) ,
931+ P . pair ( "embedded_fonts" , T . boolean ) ,
932+ P . list ( "embedded_files" , T . item ( EmbeddedFile ) ) ,
914933 ) ,
915934 ) ;
916935
@@ -1763,9 +1782,10 @@ export class Model {
17631782 }
17641783}
17651784
1766- export class Group {
1785+ export class Group implements HasUniqueID {
17671786 name : string ;
1768- id : string ;
1787+ id ?: string ;
1788+ uuid ?: string ;
17691789 locked = false ;
17701790 members : string [ ] ;
17711791
@@ -1778,8 +1798,13 @@ export class Group {
17781798 P . positional ( "name" , T . string ) ,
17791799 P . atom ( "locked" ) ,
17801800 P . pair ( "id" , T . string ) ,
1801+ P . pair ( "uuid" , T . string ) ,
17811802 P . list ( "members" , T . string ) ,
17821803 ) ,
17831804 ) ;
17841805 }
1806+
1807+ get unique_id ( ) : string | undefined {
1808+ return this . uuid ?? this . id ;
1809+ }
17851810}
0 commit comments