leomcelroy / svg-pcb

Design PCBs in the Browser
https://www.leomcelroy.com/svg-pcb-website
GNU General Public License v3.0
64 stars 9 forks source link

Some KiCAD_modules are not parsed properly #52

Open leomcelroy opened 1 year ago

leomcelroy commented 1 year ago

For example the file copied below.

The issue is in https://github.com/leomcelroy/svg-pcb/blob/main/js/ki_cad_parser.js

(footprint CAP_EEEFN1H101V (layer F.Cu) (tedit 643D8CE0)
  (descr "")
  (attr smd)
  (fp_text reference REF** (at 0.325 -5.535 0) (layer F.SilkS)
    (effects (font (size 1.0 1.0) (thickness 0.15)))
  )
  (fp_text value CAP_EEEFN1H101V (at 6.675 5.535 0) (layer F.Fab)
    (effects (font (size 1.0 1.0) (thickness 0.15)))
  )
  (pad 1 smd custom (at -3.0 0.0) (size 2.0 2.0) (layers F.Cu)
    (zone_connect 0) (options (clearance outline) (anchor rect))
    (primitives
      (gr_poly
        (pts
          (xy -0.65 2.35)
          (xy -0.65 1.25)
          (xy -2.35 1.25)
          (xy -2.35 -1.25)
          (xy -0.65 -1.25)
          (xy -0.65 -2.35)
          (xy 0.65 -2.35)
          (xy 0.65 -1.25)
          (xy 1.65 -1.25)
          (xy 1.65 1.25)
          (xy 0.65 1.25)
          (xy 0.65 2.35)
        ) (width 0.01)
      )
    )
  )
  (pad 2 smd custom (at 3.0 0.0 180.0) (size 2.0 2.0) (layers F.Cu)
    (zone_connect 0) (options (clearance outline) (anchor rect))
    (primitives
      (gr_poly
        (pts
          (xy 0.65 2.35)
          (xy 0.65 1.25)
          (xy 2.35 1.25)
          (xy 2.35 -1.25)
          (xy 0.65 -1.25)
          (xy 0.65 -2.35)
          (xy -0.65 -2.35)
          (xy -0.65 -1.25)
          (xy -1.65 -1.25)
          (xy -1.65 1.25)
          (xy -0.65 1.25)
          (xy -0.65 2.35)
        ) (width 0.01)
      )
    )
  )
  (fp_poly
    (pts
      (xy -3.65 2.35)
      (xy -3.65 1.25)
      (xy -5.35 1.25)
      (xy -5.35 -1.25)
      (xy -3.65 -1.25)
      (xy -3.65 -2.35)
      (xy -2.35 -2.35)
      (xy -2.35 -1.25)
      (xy -1.35 -1.25)
      (xy -1.35 1.25)
      (xy -2.35 1.25)
      (xy -2.35 2.35)
    ) (layer F.Paste) (width 0.01)
  )
  (fp_poly
    (pts
      (xy -3.75 2.45)
      (xy -3.75 1.35)
      (xy -5.45 1.35)
      (xy -5.45 -1.35)
      (xy -3.75 -1.35)
      (xy -3.75 -2.45)
      (xy -2.25 -2.45)
      (xy -2.25 -1.35)
      (xy -1.25 -1.35)
      (xy -1.25 1.35)
      (xy -2.25 1.35)
      (xy -2.25 2.45)
    ) (layer F.Mask) (width 0.01)
  )
  (fp_poly
    (pts
      (xy 3.75 2.45)
      (xy 3.75 1.35)
      (xy 5.45 1.35)
      (xy 5.45 -1.35)
      (xy 3.75 -1.35)
      (xy 3.75 -2.45)
      (xy 2.25 -2.45)
      (xy 2.25 -1.35)
      (xy 1.25 -1.35)
      (xy 1.25 1.35)
      (xy 2.25 1.35)
      (xy 2.25 2.45)
    ) (layer F.Mask) (width 0.01)
  )
  (fp_poly
    (pts
      (xy 3.65 2.35)
      (xy 3.65 1.25)
      (xy 5.35 1.25)
      (xy 5.35 -1.25)
      (xy 3.65 -1.25)
      (xy 3.65 -2.35)
      (xy 2.35 -2.35)
      (xy 2.35 -1.25)
      (xy 1.35 -1.25)
      (xy 1.35 1.25)
      (xy 2.35 1.25)
      (xy 2.35 2.35)
    ) (layer F.Paste) (width 0.01)
  )
  (fp_line (start -4.15 -2.65) (end -4.15 2.65) (layer F.Fab) (width 0.127))
  (fp_line (start -4.15 2.65) (end -2.65 4.15) (layer F.Fab) (width 0.127))
  (fp_line (start -2.65 4.15) (end 4.15 4.15) (layer F.Fab) (width 0.127))
  (fp_line (start 4.15 4.15) (end 4.15 -4.15) (layer F.Fab) (width 0.127))
  (fp_line (start 4.15 -4.15) (end -2.65 -4.15) (layer F.Fab) (width 0.127))
  (fp_line (start -2.65 -4.15) (end -4.15 -2.65) (layer F.Fab) (width 0.127))
  (fp_line (start -4.15 2.65) (end -2.65 4.15) (layer F.SilkS) (width 0.127))
  (fp_line (start -2.65 4.15) (end 4.15 4.15) (layer F.SilkS) (width 0.127))
  (fp_line (start 4.15 -4.15) (end -2.65 -4.15) (layer F.SilkS) (width 0.127))
  (fp_line (start -2.65 -4.15) (end -4.15 -2.65) (layer F.SilkS) (width 0.127))
  (fp_line (start -4.15 -2.65) (end -4.15 -1.57) (layer F.SilkS) (width 0.127))
  (fp_line (start -4.15 1.57) (end -4.15 2.65) (layer F.SilkS) (width 0.127))
  (fp_line (start 4.15 -1.57) (end 4.15 -4.15) (layer F.SilkS) (width 0.127))
  (fp_line (start 4.15 4.15) (end 4.15 1.57) (layer F.SilkS) (width 0.127))
  (fp_line (start -5.6 -1.5) (end -4.4 -1.5) (layer F.CrtYd) (width 0.05))
  (fp_line (start -4.4 -1.5) (end -4.4 -2.775) (layer F.CrtYd) (width 0.05))
  (fp_line (start -4.4 -2.775) (end -2.775 -4.4) (layer F.CrtYd) (width 0.05))
  (fp_line (start -2.775 -4.4) (end 4.4 -4.4) (layer F.CrtYd) (width 0.05))
  (fp_line (start 4.4 -4.4) (end 4.4 -1.5) (layer F.CrtYd) (width 0.05))
  (fp_line (start 4.4 -1.5) (end 5.6 -1.5) (layer F.CrtYd) (width 0.05))
  (fp_line (start 5.6 -1.5) (end 5.6 1.5) (layer F.CrtYd) (width 0.05))
  (fp_line (start 5.6 1.5) (end 4.4 1.5) (layer F.CrtYd) (width 0.05))
  (fp_line (start 4.4 1.5) (end 4.4 4.4) (layer F.CrtYd) (width 0.05))
  (fp_line (start 4.4 4.4) (end -2.775 4.4) (layer F.CrtYd) (width 0.05))
  (fp_line (start -2.775 4.4) (end -4.4 2.775) (layer F.CrtYd) (width 0.05))
  (fp_line (start -4.4 2.775) (end -4.4 1.5) (layer F.CrtYd) (width 0.05))
  (fp_line (start -4.4 1.5) (end -5.6 1.5) (layer F.CrtYd) (width 0.05))
  (fp_line (start -5.6 1.5) (end -5.6 -1.5) (layer F.CrtYd) (width 0.05))
  (fp_circle (center -4.8 -2.0) (end -4.7 -2.0) (layer F.Fab) (width 0.2))
  (fp_circle (center -4.8 -2.0) (end -4.7 -2.0) (layer F.SilkS) (width 0.2))
)