circuitsmith-development Mailing List for CircuitSmith
Electronics Design Software
Status: Pre-Alpha
Brought to you by:
kmacc
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|
From: Kenneth M. <km...@ci...> - 2006-05-18 05:58:26
|
Hi, I've just added a bunch of stuff to the PCB side of things. First, there are a bunch of primitives available like lines, circles, etc. These all now save and load correctly with the new file format. Note that I've made it so the new format is the default. I suppose we should kill off the old one; I'm not bothering to keep it up-to-date with all of the new stuff. Another change is that there is now only one properties dialog. Whenever a document pane is selected it writes over the panels on the dialog. I found it annoying that you could have a bunch of dialogs open at once and some would reflect documents which were not in the foreground. It also used to be that you could have the properties dialog of one pane visible which working on another. So I changed this. My immediate goal with the PCB stuff is to make footprints. As I go though, I've been finding oopsies with the stuff I've already coded so I haven't got very far yet. The next step is to draw a simple footprint in a PCB, and then to get the EdaComponentBoxes (or maybe a new subclass) working in PCBs. When this is done, I should be able to extract that footprint (which might be a subclass of EdaSymbol or maybe just an EdaGroup) and place it on another PCB. Once that works I think it's reasonable to release the next version of code which should be version 0.2.0 according to the plan. Cheers, Kenneth. |
From: Kenneth M. <km...@ci...> - 2006-05-10 04:26:17
|
Hi guys, I thought it would be a good idea to hash out the gerber stuff now that Roy has started looking into it. First some background. I apologize if you know all of this already. Gerber files are the industry standard format for transferring pcb designs to pcb manufacturing companies. There is one other file type for defining drill locations - oftencalled excellon or NC drill files - which tends to get lumped in when we talk about gerbers. www.apcircuits.com has some good examples and descriptions of the two file types. Basically drill files contain a list of drill sizes used followed by the location of the drill hits. Gerber files (extended gerbers that is) contain a list of aperatures (shapes) followed by application of those aperatures as either flashes (used in a single place) or drags (used to make a line). As you'll find from the RS274X format, you can get pretty fancy with them. Unfortunately most PCB houses don't like all of that so I think we should ignore it, at least for now. I'll quickly talk about how the files are used. Note that I'm not going into any details about the specifics of the formats, such as units, precision and all the other options available. These are details. When I send cam (computer aided manufacturing) files to a board house I send one board's worth zipped up in a single zip file. This zip file would contain something like the following list. I've used Protel's standard file extensions just because I use them all the time. PC0003-02.gtl --- top copper layer extended gerber PC0003-02.gbl --- bottom copper layer extended gerber PC0003-02.gto --- top silkscreen extended gerber PC0003-02.gbo --- bottom silkscreen exteded gerber PC0003-02.gts --- top solder mask extended gerber PC0003-02.gbs --- bottom solder mask extended gerber PC0003-02.gm1 --- outline layer extended gerber PC0003-02.txt --- NC drill file readme.txt --- text file describing the type of board, thickness, plating and all the filenames. This is read by humans usually to make sense of all of the above files Often manufacturer's also want aperature files and drill table files. These are throwbacks to the original file types when each gerber and drill file did not specify the aperatures and drill diameters at the top of the file. So, what do we do? It would be cool if CircuitSmith was pretty automated. For instance, it could just produce the zip file. I don't know of any program that does this yet; although I might be out of date. I would also like the option to have multiple gerber settings per pcb. I imagine a gerber setting class which extends EdaTreeNode - let's call it EdaGerberNode for now - and they appear in the tree as children to the PCB. They would have some sort of properties dialog which would probably be multi-tabbed. First tab: General this tab has a bunch of settings like output file name, whether to zip the output, format for gerbers, absolute vs relative origin etc. Second tab: Layers This tab has a table of files to generate. Columns: name, layer name(s), type of file The user can add or remove files. third tab: readme This tab sets up the auto generation of the readme file. I imagine it's probably just a big text box which the user can write out the text of the readme along with special tags for file names, board thickness, plating, silkscreen colour etc. All of these settings will get stored in the EdaGerberNode so the user can easily generate files again and again and only set it up once. It would be neat if there's a way to set up global settings for these so they all start in some preconfigured (by the user) way. The user can then hit a generate button (either from the node pop-up menu or from the dialog) a file dialog will pop up to ask where to generate and then the dialog will make all of the gerber files as specified. So, on to the mechanics of making the files. I figure that gerber generation is most similar to a printing operation, so it makes most sense to use a Graphics2D context to carry out the task. This also provides a nice split between what we have now and the addition of this gerber functionality. For now I am going to assume that Roy will come up with some magical way to render text (of whatever font) onto the gerber context so no consideration needs to be taken from the other side of the program in this regard. The EdaGerberNode will step through each file it's supposed to generate, and call the draw method of the pcb with parameters of an EdaGerber2D and an EdaLayerList containing the required layers. Does anyone have any suggestions or things they really want in this area? I think this is a pretty good way to start. Cheers for now. Kenneth. |