Package org.openpnp.model.eagle

Source Code of org.openpnp.model.eagle.EagleLoader

package org.openpnp.model.eagle;

import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;
import java.util.HashSet;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.transform.Source;
import javax.xml.transform.sax.SAXSource;

import org.openpnp.model.eagle.xml.Drawing;
import org.openpnp.model.eagle.xml.Eagle;
import org.openpnp.model.eagle.xml.Library;
import org.openpnp.model.eagle.xml.Package;
import org.openpnp.model.eagle.xml.Packages;
import org.openpnp.model.eagle.xml.Smd;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;

public class EagleLoader {
    private static final String FEATURE_NAMESPACES = "http://xml.org/sax/features/namespaces";
    private static final String FEATURE_NAMESPACE_PREFIXES = "http://xml.org/sax/features/namespace-prefixes";
   
    private final URL url;
   
    public EagleLoader(URL url) {
        this.url = url;
    }
   
    public static void main(String[] args) throws Exception {
        String packageName = "org.openpnp.model.eagle.xml";

        JAXBContext ctx = JAXBContext.newInstance(packageName);
        Unmarshaller unmarshaller = ctx.createUnmarshaller();

        XMLReader xmlreader = XMLReaderFactory.createXMLReader();
        xmlreader.setFeature(FEATURE_NAMESPACES, true);
        xmlreader.setFeature(FEATURE_NAMESPACE_PREFIXES, true);
        xmlreader.setEntityResolver(new EntityResolver() {
            public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
                return new InputSource(Eagle.class.getResourceAsStream("eagle.dtd"));
            }
        });

        InputSource input = new InputSource(new FileInputStream("/Users/jason/Desktop/adafruit.lbr"));
        Source source = new SAXSource(xmlreader, input);

        Eagle eagle = (Eagle) unmarshaller.unmarshal(source);
        Drawing drawing = (Drawing) eagle.getCompatibilityOrDrawing().get(0);
        Library library = (Library) drawing.getLibraryOrSchematicOrBoard().get(0);
        Packages packages = library.getPackages();
        HashSet<Object> stuff = new HashSet<Object>();
       
        System.out.println("<openpnp-packages>");
       
        for (Package pkg : packages.getPackage()) {
            System.out.println(String.format("<package id=\"%s\" name=\"%s\">", pkg.getName(), pkg.getName()));
            System.out.println(String.format("<footprint units=\"Millimeters\">"));
            for (Object o : pkg.getPolygonOrWireOrTextOrDimensionOrCircleOrRectangleOrFrameOrHoleOrPadOrSmd()) {
                if (o instanceof Smd) {
                    Smd smd = (Smd) o;
                    System.out.println(String.format("<pad x=\"%s\" y=\"%s\" width=\"%s\" height=\"%s\"/>", smd.getX(), smd.getY(), smd.getDx(), smd.getDy()));
                }
            }
            System.out.println(String.format("</footprint>"));
            System.out.println("</package>");
        }
       
        System.out.println("</openpnp-packages>");
    }
}
TOP

Related Classes of org.openpnp.model.eagle.EagleLoader

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.