Using Eagle3D to Generate Virtual Images
To visualize your boards, you’ll need to download Eagle3D and POVRay. Install those and you’ll be ready to go.
Eagle3D
A very useful tool written some time ago by Matthias Weißer, Eagle3D allows you to create a virtual three-dimensional image of your board. It does this by using EAGLE’s built in scripting language, or User Language Programs (ULP for short). It is a useful tool, and is pretty cool if nothing else. I wish I had come across this when I was working on one of my first boards. I had unknowingly reversed a power jack, and because the plug was so large, it took some creative soldering to be able to plug the power in without having my board remade. It is also very handy in presentations, and can give people an idea of what the board should look like when it’s finished. This is especially useful if you aren’t the one who will be soldering the board. You can generate a virtual image of your board so whoever is soldering your board will know exactly what to expect.
To use Eagle3D, open up a completed board that you would like to visualize. Click File, Run (or click the “ULP” button on the top menu bar), and navigate to the directory where you installed Eagle3D. I used the default directory, and for me it was C:\Program Files\Eagle\ULP\Eagle3d. From here, select the file 3d41.ulp (unless you’re using a pre 4.1 version of EAGLE, then select 3d40.ulp). The first time this runs, you’ll see a menu prompting you to select a language. After selecting your language, you’ll see another window a few different tabbed pages. You can play with the options here to change what parts of your board are rendered and how, as well as change your virtual light sources and camera angles. I just select my output path and click the button on the bottom to generate the pov file and exit Eagle3D. With the pov file generated, we can now render the image in POVRay.
POVRay
Before attempting to generate your image, POVRay needs to know where to look for the parts. Open the directory where you installed POVRay (probably “C:\Program Files\POVRay for Windows” or something similar), then open the Renderer folder. Open the povray.ini file. Now find the path to your Eagle3D povray libraries (for me, it was “C:\Program Files\Eagle3D\ulp\Eagle3D\povray”). You’ll need to add this to the paths that POVRay looks in for rendering information. In the povray.ini file, add the line Library_Path=”C:\Program Files\Eagle3D\ulp\Eagle3D\povray” (or whatever your povray path was). Next, open the povray file of your board in POVRay and click run. You should see the image begin to render. It will save the image in the same directory as your povray file, and with the same name (but with a bmp extension).
Now you can visualize your board before you submit it to your manufacturer. You’d be surprised at how many mistakes you can catch with such a simple step.
I hope you’ve enjoyed these tutorials so far. I’ll be leaving EAGLE tutorials for a while to work on writing a few posts about common ICs such as the 555 timer, as well as op-amp topologies, filters, and other useful circuits. That isn’t to say that I’m done with EAGLE, but I believe what is available is sufficient for now. As always, feel free to ask me any questions by emailing me at chris@ece101.com. If you have questions about EAGLE or anything else, I’ll do my best to answer them.
Comment from Alfredo
Time February 21, 2010 at 2:05 pm
Hey, Chris! I’m new to using EAGLE. I noticed that when I want to add a component to my schematic using the library(ADD command), the library interface lists the part on the left and the schematic symbol on the right, along with the footprint image. Sometimes, I’m not sure if the part is of the correct type that I want (CAPs: electrolytic, ceramic, etc.) and isn’t always easy to tell by the description or the package symbol. I think it would be 100 times cooler and more efficient if I could see the EAGLE 3D rendered image of the part next to the package/footprint image. Is there a way to change the code or create a ULP or some sort of plug-in to introduce this feature to EAGLE? I wouldn’t mind being the guy to write the code for it, but give me some direction, please. I know some C#, basic html, and have an intermediate level understanding of object-oriented programming. Can we do this?