-
Notifications
You must be signed in to change notification settings - Fork 11
/
README
1683 lines (1084 loc) · 47.1 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Description:
FritzingCheckPart.py is a python script which checks parts files for
use by the Fritzing EDA program (fritzing.org). It started out to correct
some of the issues that Fritzing has with the output from the Inkscape
(inkscape.org) open source svg editor program. It then grew in to checking the
format of the various file (fzp and svg) that make up a fritzing part.
As a part of that it also prettyprints xml (with varying success), it
does best with postprocessed fritzing svg files, because it understands their
format and has modified the xml (mostly moving CSS style commands in to inline
xml which as a side effect makes prettyprinting easier), to better suit
fritzing. A standalone script PP.py, is included which will prettyprint a
xml document without doing any of the fritzing related conversions.
Installation:
The script uses python3 and the lxml library extensions to python.
Since Fritzing runs on Windows, linux and MacOS X the script should run on
those platforms too, and it may. I don't have MacOS X so I don't know that
it will run there (although there is no reason that it shouldn't, I just
haven't done it.)
On Windows:
I run the script from cygwin on Windows. It will likely run on one of
the native python implementations (you may need to use pip to install the lxml
extension) but I haven't done so. For cygwin you need to install cygwin
(cygwin.org) using the setup program as detailed on cygwin.org. The basic
install with the following additions does fine:
python3: Py3K language interpreter
python3-lxml: Python XML2/XSLT bindings
(and all their associated dependencies)
with that in place from a cygwin terminal copy the python scripts
FritzingCheckPart.py
FritzingTools.py
PP.py
PPTools.py
to /usr/local/bin
chmod ugo+x /usr/local/bin/*.py
On Linux (Ubuntu 16.04 LTS):
copy the py scripts to /usr/local/bin via sudo:
sudo cp FritzingCheckPart.py /usr/local/bin
sudo cp FritzingTools.py /usr/local/bin
sudo cp PP.py /usr/local/bin
sudo cp PPTools.py /usr/local/bin
chmod ugo+x /usr/local/bin/*.py
The Ubuntu install appears to have lxml and python 3 already installed
Note the script has problems with unicode under python 2.7 and probably won't
run there without modification (which I don't know how to make).
Testing:
Assuming you have Fritzing installed the following will check (and complain
about!) the parts in core:
mkdir tst
FritzingCheckPart.py fritzing-0.9.3b.linux.AMD64/fritzing-parts/core tst
(replace the fritzing-0.9.3b.linux.AMD64/fritzing-parts/core with the path
to your fritzing-parts core directory!)
which should produce output like this (in large volume) on the console:
**** Starting to process file 10x2-Epaper-Breakout-Board-v11.fzp
Error: File
'/cygdrive/c/fritzing/fritzing.0.9.3b.64.pc/fritzing.0.9.3b.64.pc/fritzing-parts/core/10x2-Epaper-Breakout-Board-v11.fzp'
Connector0 doesn't exist (connectors should start at 0)
...
Normal use:
PrettyPrinting:
PP.py xml_file [another_xml_file ...]
will pretty print the xml file to xml_file leaving the original file in
xml_file.bak internally it sets the file type to svg so that it will split
blanks in lines such as attribute="value" attribute="value" in to
attribute="value"
attribute="value"
with appropriate indenting. Since this is meant for post processed Fritzing
svg file it may or may not do what you want. So try it and see. It won't
split on blanks in text or quoted strings but may screw up on general xml
sometimes, so use it if it is useful.
FritzingCheckPart.py
There are several modes (selected internally by the number and type of
the arguments to the script.):
1)
dir to dir:
FritzingCheckPart.py src_dir dst_dir
This processes all the fritzing files it finds in src_dir and writes their
output in to dst_dir. Dst_dir needs to be empty to avoid damaging existing
files. Subdirectories to match the fritzing file set up will be created in
the dst_dir. If you are processing part.fzp type files the output will go
in to dst_dir at the top level and the svg and subdirectories will remain
empty. In the case of core in the example above the identical directory
format will be recreated under dst_dir. To run this a second time you need
to empty the dst_dir via command like
rm -R dst_dir/*
This is mostly used for testing (against core as a source of diverse files,
many with errors) and to allow a mass correction of core if desired. Note
you only want to run this mode against core as the other modes will change
files in core that are under git control and tend to break Fritzing.
2)
FritzingCheckPart.py part.filename.fzp
part.filename.fzp format (from an unzipped .fzpz file which will have files
of the form
part.filename.fzp
svg.breadboard.filename.svg
svg.icon.filename.svg
svg.schematic.filename.svg
svg.pcb.filename.svg
The input files will be renamed to filename.bak with the script output, the
fixed up (we hope) xml, written to the original file name ready to be rezipped
and loaded to fritzing. If something goes wrong, the original data is in the
.bak files (so long as you haven't run the script twice). First the fzp file
will be processed to get the connector information and the expected svg files,
then each svg file in turn will be processed. So you need to pay attention to
the file name in the error messages, as it may not be referring to the input
file, but an svg file linked from the input file.
3)
FritzingCheckPart.py parts/user/filename.fzp
the input file is in directory user/filename.fzp (and the user in the path
is required to be present, the script will error out if it is not). The svg
files are in
user/svg/user/breadboard/filename.svg
user/svg/user/icon/filename.svg
user/svg/user/pcb/filename.svg
user/svg/user/schematic/filename.svg
which is the standard place where imported parts are stored by fritzing (in
the core exampe at the start of this, the "core" directory is the same as
"user" here). Again the fzp file will be processed followed by the associated
svgs. So again you need to pay attention to the file name in the error
messages, as it may not be referring to the input file, but an svg file
linked from the input file.
4)
FritzingCheckPart.py filename.svg
this form does what checks it can on the svg file (which aren't that many as
it lacks the data from the fzp file to know what connectors it should be
checking for). What it does do is the original purpose of this script which
is to change the style(attribute:value;attirbute:value) commands to the
equivelent inline xml attirbute="value" attribute="value" as parts
of fritzing, (specifically bendable legs) don't support style type attributes
and won't work if they are present. It changes font-size=3.5px to
font-size=3.5 as the trailing px, required by CSS, causes font size errors
in fritzing. It converts silkscreen (in pcb) items from the old standard
white (which Inkscape with a white background won't display succcessfully) to
the new standard of black. It will discover and complain about (but not so
far, do anything about, due to positioning/scaling issues) terminals that
have a zero height or width. These are not selectable by Inkscape making
them difficult to move in the svg. Unfortunatly you need to manually change
the size (which changes the position) and then move the teriminal to the
correct position. It would be nice to automate this, but it isn't done now.
Last but not least, if this is a pcb svg file it moves stroke-width
commands which would be inherited by a lower level group in to that group.
The scripts that produce gerber files are not able to access inherited values
(as they aren't reading the xml) and thus if a stroke-width would be
inherited from a higher level and thus is not present at the level the pad
is generated at gerber production fails. I expect this will be the main use
for this script. After modifiying a svg file with Inkscape you need to run
this script to correct the modifications that Inkscape has made for CSS
compliance before feeding it to Fritzing (which isn't CSS compliant in at
least some cases).
Configuration:
There are four internal configuration settings (you need to edit the listed
.py file and change these with a text editor):
1) in file PPTools.py
DetailPP = 'y'
Enabled by default. If detail prettyprinting of an svg appears to have screwed
up, set this value to 'n' to disable detail prettyprinting and try again. If it
works without the detailed prettyprinting please file a bug.
2) in file FritzingTools.py
ModifyTerminal = 'n'
Disabled by default because it will make a change that will change the spacing
of the terminal position in the svg, which you will manually need to correct
using an svg editor, if the width or height is 0. I enable this (by setting the
value to 'y') and then pay attention to the modifed messages to tell when it
has changed a terminal from 0. If the terminal is 0 width or height at least
Inkscape (which I use) will not select the element to move it. You have to
manually select the element and change its position with the tool bar which
I find annoying. With the value set to 'n (the default) you will get a warning
message like this one from a current core part:
Warning 16: File
'/cygdrive/c/fritzing/fritzing.0.9.3b.64.pc/fritzing-parts/core/../svg/core/schematic/4071_4_x_2_input_OR_gate_multipart_schematic.svg'
At line 66
Connector connector6terminal has a zero height
and thus is not selectable in Inkscape
This warning is all that it will do. It is up to you to edit the svg and set
the height/width to something other than 0 and correct the x/y positioning.
With the value set to 'y' on the same file (in this case changed to an
exported part so as to not change core which will break parts update, but the
same file as above) there is a different message in a different place:
Modified 2: File
'svg.schematic.prefix0000_fa1ebd566edf2f3d943a0046711f2d3c_1_schematic.svg'
At line 23
Connector connector6terminal had a zero height, set to 10
Check the alignment of this pin in the svg!
This message tells you the script has made a change that is going to have moved
the x/y position of the connector (and depending on what the scaling in the svg
is set to, perhaps made the height/width incorrect, as 10 isn't an appropiate
value for all scale factors). The warning message is no longer present as there
is now this change notification instead. As a result you need to edit the svg
and check that the terminal is 10 thou (or your preferred size, 10 thou is
mine) and in the correct x/y position as expected by the part. The upside is
that Inkscape will now select the terminal and move it if you move the entire
terminal which it wouldn't before.
3) in file FritzingCheckPart.py
IssueNameDupWarning = 'y'
This value (enabled by default) if set to 'n' will supress the Warning 28:
message which indictes the name field is not unique. While it should be
unique according to the parts file format document, Fritzing doesn't appear
to care and it seems to be only used for display in pin labels when hovered
over. It is fairly common to not be unique and thus clutters up the error
message display. I usually set this to 'n'.
4) in file FritzingCheckPart.py
Debug = 0
This value enables debug messages (set to 1 for file output to the console
but no further debug messages, set to 2 for enter/exit routine debug messages,
and to 3 for detailied but very verbose debug messages). It is used for
debugging the script itself so you will normally leave it at 0 for normal
operation.
Likely bugs:
The most likely bug relates to prettyprinting. To prettyprint svg files the
lines are split on blanks (' ') and each element is indented and printed on
a new line. Obviously (and for text, comments and referenceFile names so far,
detected and corrected for) lines with spaces that are supposed to be there
in the final document will get screwed up by the above and will need their
tags added to the exemption regex in the code.
The original file(s) are saved in a .bak file (i.e. filename.svg will
be moved to filename.svg.bak with the script output in filename.svg). However
if you run the script a second time without copying the .bak file somewhere
safe the original file will be overwritten without further warning, so be
careful. In case of script error you will likely want the original file ...
There also may be any number of other bugs I haven't found yet. If you
come across one please report it and I'll see if I can fix it.
Known bugs:
1) Makeing a square pad in pcb via a path with a hole in it usually (but
apparantly not always) works in Fritzing. This script however will toss
Error 74: File
'/cygdrive/c/fritzing/fritzing.0.9.3b.64.pc/fritzing-parts/core/../svg/core/pcb/DRV8825_breakout_pcb.svg'
At line 17
Connector connector136 has no radius no hole will be generated
Which isn't correct (but also isn't easy to fix). You can either ignore this
error as invalid (as long as the gerber export works which it does in this
case) or replace the pad with a standard circle with a radius and stroke
width (which would be my choice in the matter!) which will remove this error.
Potential error messages and what to do about them:
First the dreaded trace back:
$ ./FritzingCheckPart.py Bean_revE.fzp
Traceback (most recent call last):
File "./FritzingCheckPart.py", line 51, in <module>
rc, FileType, Path, File = tools.ProcessArgs (sys.argv, Errors)
TypeError: 'int' object is not iterable
if you get a message like this, then I have screwed up and offended the python
gods and they have taken exception (this is basically a software error). The
best bet is to provide the call above and if possible a copy of the file that
caused it so I can try and fix it.
now on to expected error messages:
Most (but not all, as the first few below show) error messages are of the
form:
Error: File
'/cygdrive/c/fritzing/fritzing.0.9.3b.64.pc/fritzing.0.9.3b.64.pc/fritzing-parts/core/blend_micro1.0.fzp'
At line 444
which gives you the file name followed by the line number (if known, sometimes
it isn't) of where the error was detectd.
Of note is the filename will be blend_micro1.0.fzp.bak if you are
processing an individual part (which will normally be the case). The reason
for this is the output file
blend_micro1.0.fzp
has been prettyprinted, and the line numbers won't match the input file
(blend_micro1.0.fzp.bak) so you need to look for the error in the filename
listed in the error message and then match it to the same text (which will
have a different line number and possibly format very likely) in the output
file if you need to. The input file will give you the place in the file that
the error occurred and you should fix it there and then remove the .bak
extension and re run the script in the corrected input file.
Usage messages (which are a type of error as they are fatal, but don't have
numbers any more)
Usage: PP.py filename (filename ...)
Indicates you didn't give a filename to the PP.py script. It wants
one or more xml files such as
PP.py test.svg
or
PP.py test1.svg test2.xml test3.fzp
Usage: FritzingTools.py filename.fzp or filename.svg or srcdir dstdir
Either no or too many arguments to the script. It wants either a
single file name or 2 directories.
Usage: FritzingTools.py src_dir dst_dir
src_dir filename isn\'t a directory
In this mode both arguments need to be directories and src isn't.
Usage: FritzingTools.py src_dir dst_dir
dst_dir filename isn\'t a directory
In this mode both arguments need to be directories and dst isn't.
Error messages in the order they occur in the code so essentially random
but numbered so you can index by the number to get the error description
and an explaination of the errror (with the move of the Usage messages
above, some numbers are now missing though.)
Error 1: Can not rename filename os_error_message (os_error_number)
The os routines returned an exception when the input file was
renamed. Hopefully the cause is obvious from the os messages.
Error 2: Can not open filename os_error_message (os_error_number)
The os routines returned an exception when the input file was
opened. Hopefully the cause is obvious from the os messages.
Error 3: Can not write filename os_error_message (os_error_number)
The os routines returned an exception when the input file was
written. Hopefully the cause is obvious from the os messages.
Error 4: Can not close filename os_error_message (os_error_number)
The os routines returned an exception when the input file was
closed. Hopefully the cause is obvious from the os messages.
Error 5: ParseFile can't read file filename
The xml parser got an I/O error trying to parse the named file.
Error 6: ParseFile error parsing the input xml file filename
The xml parser found illegal xml at the line and column listed after
this. Note the lxml parser is more strict than either Inkscape or
Fritzing and will report errors that both Inkscape and Fritzing
will accept as valid xml. If you look however, there really is an
error there and you should correct it. Below is an example from the
Bean_revE.fzp file currently in core:
/cygdrive/c/fritzing/fritzing.0.9.3b.64.pc/fritzing.0.9.3b.64.pc/fritzing-parts/core/Bean_revE.fzp:161:90:FATAL:PARSER:ERR_SPACE_REQUIRED: attributes construct error
line 161 from Bean_revE.fzp
<p layer='schematic' hybrid='yes' svgId='connector81pin' terminalId='connector81terminal'hybrid='yes' /></schematicView>
there are two errors in this line. There is a missing space between
connector81terminal' and hybrid='yes' and the second hybrid='yes is
wrong. The line should be corrected to this:
<p layer='schematic' hybrid='yes' svgId='connector81pin' terminalId='connector81terminal' /></schematicView>
which is correct xml and the complaints from parser will stop. You
will get a lot more errors, but again they are really there, even
though the part with these errors loads and runs happily in Fritzing.
Error 8: filename isn't a file: ignored
The file name provided either isn't a file or isn't readable and has
been ignored.
Error 10: There must be a directory that is not '.' or '..' in the input name
for a fzp file in order to find the svg files.
Indicates that it needs a directory (for example core/file.fzp) in
order to figure out where the svg files are (../svg/core/... in this
case). Supply the directory and it will be happy.
Error 13: dst dir
dst_dir
must be empty and it is not
The dst_dir isn't empty (perhaps from a previous run). If you are sure
the directory is expendable rm -R dst_dir/* will fix this.
Error 14: Creating dir
dir_name os_error_message (os_error_number)
A problem creating one of the dst directories. Hopefully the os error
messages will make the cause clear.
Error 15: Can not rename
'src_file'
to
'src_file.bak'
'file_name_from_os'
os_error_message (os_error_number)
A problem occurred trying to rename the src_file to src_file.bak.
Hopefully the os error messages indicate why.
Error 16: File
'filename'
At line 20
Id xxx present more than once (and should be unique)
The listed id is present more than once and should be unique (often
Fritzing ignores this but it is incorrect)
Error 17: File
'filename'
No connectors found for view viewname.
This is one of those messages without a line number as after all the
connectors have been processed, no connectors were found.
Error 18: File
'filename'
Connector connector2terminal is in the fzp file but not the svg file. (typo?)
This connector is specified in the fzp file, but isn't in the
associated svg file. Depending on what type of connector it is
this may or may not be fatal (a svgId is fatal a terminalId is not).
In either case it is incorrect.
Error 19: File
'filename'
File type xxx is an unknown format (software error)
Another case of software error where the type isn't svg, fzppart or
fzpfritz. Shouldn't happen.
Error 20: File
'filename.svg'
During processing svgs from fzp, svg file doesn't exist
The filename referenced for this view in the fzp file doesn't exist.
Fritzing will try and find something to substitute, but this is still
an error.
Error 21: Svg file
'Filename.svg'
Has a different case in the file system than in the fpz file
'filename.svg'
This doesn't matter on Windows as the file system is case insensitive
however it does matter on Linux and probably MacOS where the file
system is case sensitive and the wrong case file will not be found.
Change either the fzp or the file in the file system to the same
case and all will be well on all systems. While I could correct this
in the fzp file it seems better to do it manually because it isn't
clear whether the fzp file is incorrect or this particular file system
is incorrect, and thus is better left to a human decision rather than
a program.
Error 22: File
'filename.fzp'
At line 1
No ModuleId found in fzp file
There isn't a moduleId in the fzp file. This is likely fatal as I don't
think the part can load without a moduleId. Add a moduleId to the file
(preferably export a new part to get a Fritzing approved moduleId).
Error 23: File
'filename.fzp'
At line 20
A bus is already defined, schematic parts won't work with busses
A non empty Bus definition has already been seen. Fritzing won't
currently support both busess and schematic parts.
Error 24: File
'filename'
At line 20
More than one copy of Tag sometag
Tag sometag should only occur once in the fzp file and we have seen
another copy of it here.
Error 25: File
'filename.fzp'
At line 2
Multiple ModuleIds found in fzp file
There is more than one moduleId set in the fzp file (there should only
be one)
Error 26: File
'filename.fzp'
At line 20
State error, expected tag tag not a view name
There is something wrong in the fzp file (or this code). The tag we
have doesn't match the expected state of a correct fzp file. Best bet
is to check the format of the fzp file against a known good version,
as there is probably an extra or missing line in this file.
Error 27: File
'filename.fzp'
At line 20
View name missing
We have no viewname (iconView breadboardView schematicView pcbView)
which should be present.
Error 28: File
'filename.fzp'
At line 20
Multiple view tags schematicView present, ignored
There is more than one view of this name defined in the file when there
should only be one of each.
Error 29: File
'filename.fzp'
At line 20
View tag scchematicView not recognized (typo?)
View tag isn't one of (iconView breadboardView schematicView pcbView)
which it should be.
Error 30: File
'filename.fzp'
At line 20
No image name present
The file name for the svg file is missing in the fzp file.
Error 31: File
'filename.fzp'
At line 20
Multiple viewname image files present
There is more than one image file name present, there should only be
one.
Error 32: File
'filename.fzp'
At line 20
No layerId value present
There is a layerId attribute present, but it has no value (and it needs
one).
Error 33: File
'filename.fzp'
At line 20
View viewname already has layerId layername, layername1 ignored
The layerId isn't unique and it must be.
Error 34: File
'filename.fzp'
No views found.
There are no views found in the fzp file. There isn't a line number
because this occurs after we have seen all the lines that may contain
a view.
Error 35: File
'filename.fzp'
Unknown view viewname found. (Typo?)
Found a view name that isn't one of iconView breadboardView
schematicView or pcbView (probably a typo)
Error 36: File
'filename.fzp'
No valid views found.
Didn't find any of iconView breadboardView schematicView or pcbView
in the list of view names.
Error 37: File
'filename.fzp'
This is a smd part as only the copper0 view is present but it is on the
bottom layer, not the top. If you wanted a smd part change copper0 to
copper 1 at line 20 If you wanted a through hole part add the copper1
definition after line 19
This is a smd part but it is on the wrong layer (and thus likely an
error). If you really want the part to be on the bottom for something
this error can be ignored.
Error 38: File
'filename.fzp'
At line 20
State error, tag stack is at level 8 and should only go to level 7
This error indicates that there are too many lines in the fzp file
as the tags have gotten deeper than is possible for a valid file.
Error 39: File
'filename.fzp'
At line 20
Connector has no id
A connector has no id associated with it and it must have one.
Error 40: File
'filename.fzp'
At line 20
Connector has no Name
A connector has no Name associated with it and it must have one.
Error 41: File
'filename.fzp'
At line 20
Connector connector3 has no Type
A connector has to have type male or female and has neither.
Error 42: File
'filename.fzp'
At line 20
Connector connector3 has no description
A connector doesn't have a description. When you hover on a pad in
breadboard or schematic you won't get a description.
Error 43: File
'filename.fzp'
At line 20
Connector connector3 missing view name
The connector doesn't have a view name.
Error 44: File
'filename.fzp'
At line 20
Viewname bbreadboardView invalid (typo?)
The viewname isn't one of breadboardView schematicView pcbView and
it should be.
Error 45: File
'filename.fzp'
At line 20
Layer missing
The layer attribute is missing in the fzp file.
Error 46: File
'filename.fzp'
At line 20
No layerId for View SchematicView
A layerId wasn't specified for this view earlier in the fzp file.
Error 47: File
'filename.fzp'
At line 20
LayerId here doesn't match View schematicView layerId schematic
A layerId here doesn't match the layerId specified earlier for this
view (or views in the case of pcb view which can have multiple
layerids.)
Error 48: File
'filename.fzp'
At line 20
Connector connector4 layer copper0 already defined, must be unique
This connectorid layer combination is already defined and must be
unique.
Error 49: File
'filename.fzp'
At line 20
hybrid is present but isn't 'yes' but yyes (typo?)
The hybrid flag is present but with an invalid value (it must be yes).
Error 50: File
'filename.fzp'
At line 20
Tag svgId is present but has no value
The listed tag is present but has no value set.
Error 51: File
'filename.fzp'
At line 20
svgId missing
There is no svgId present for this connector and one is required.
Error 52: File
'filename.fzp'
At line 20
Bus bus2 already defined
There is aready a bus with this id and ids must be unique.
Error 53: File
'filename.fzp'
At line 20
Bus nodeMember connector2 does't exist
The nodeMember specified doesn't exist and it must.
Error 54: File
'filename.fzp'
At line 20
Bus nodeMember connector2 already in bus bus3
The nodeMember specified is already in the specified bus and can't
be in two at once.
Error 55: File
'filename.fzp'
At line 20
Subpart has no id
The subpart is missing the id field (required)
Error 56: File
'filename.fzp'
At line 20
Subpart id subpartid already exists (must be unique)
The subpart is already in use for another subpart and must be unique.
Error 57: File
'filename.fzp'
At line 20
Subpart has no label
The subpart has not label and it needs one.
Error 58: File
'filename.fzp'
At line 20
Subpart subpartid already defined (duplicate?)
The subpart has already been defined and must be unique.
Error 59: File
'filename.fzp'
At line 20
Connector id missing, ignored
The subpart definition is missing the id field.
Error 60: File
'filename.fzp'
At line 20
Connector connector2 doesn't exist (and it must)
The connector id isn't already defined in the fzp file and it must be.
Error 61: File
'filename.fzp'
At line 20
Subpart connector connector0 already in subpart sub1
The connector id is already part of another subpart and can only be
in one subpart.
Error 62: File
'filename.fzp'
No connectors found to check
There are no connectors defined when we tried to check that the
connectors are in the correct sequence.
Error 63: File
'filename.fzp'
Connector0 doesn't exist (connectors should start at 0)
There isn't a connector0 and there should be.
Error 64: File
'filename.fzp'
Connector connector5 doesn't exist when it must to stay in sequence
Connectors 0 to 4 exist, then it skips to something above 5. This
causes label problems (as fritzing assumes the labels are in sequence
and will misnumber the missing and following connections).
Error 65: File
'filename.fzp'
At line 20
Connector connector1pad is an ellipse not a circle, (gerber generation will
break.)
This indicates a connector in a pcb svg is an ellipse (i.e. has rx and