Fix some broken assumptions regarding 32-bit integer coordinates in polygon1.c
[geda-pcb/pcjc2.git] / README_FILES / Whats_new_in_2.0
blobe4472567021d03d947178b709aef14cf5c0d4165
1 New Features for 2.0
3 (1) New library system. A directory tree is parsed and added to the library 
4 selector window. This directory is specified in the config.h file as 
5 PCBTREEDIR and should point to a directory where any pcb user that needs to 
6 create library elements has write privileges. The "-libtree X" switch will 
7 cause pcb to use directory X instead of the installed default for the new 
8 library directory. You should continue to be wary of the old library 
9 elements, many of them are not quite right. (Just check them carefully before 
10 fabing to be sure there are no surprises). My intent is to create a 
11 repository for new elements THAT PEOPLE HAVE FABRICATED SUCCESSFULLY in order 
12 to grow a reliable library.
14 (2) Element files can now contain layers (line, arcs, polygons), vias and 
15 elements. The new library system reads from element files (no need to learn 
16 M4). The expanded capability of element files allows you to put useful 
17 sub-circuits into the library. For example, a QFP package with a break-out 
18 via pattern can be stored as a library element. Be careful with this as the 
19 layers are saved simply by their layer number and lose any association with a 
20 group (e.g. whether it is the component, or solder-side layer).
22 (3) Improved fascilities for creating elements from drawn objects. Now you 
23 can put an element in the buffer, and break it into it's consitutent parts. 
24 Paste this to the layout, make changes, then put it back in the buffer to 
25 convert to an element. You can also save a buffer's contents to an element 
26 file (i.e. add it to the library). Of course element files are still just 
27 text files so you can edit them at will. Draw the element outline on the silk 
28 layer (lines and arcs, no polygons), use Vias to make pins or holes, and lines 
29 on the component and/or solder layers for SMD pads. Number the pins and pads 
30 with the name ("n" key) entry, then cut it all to the buffer and select 
31 "convert buffer to element". Saved elements always appear in the file in a 
32 component-side orientation (even if you save while viewing the solder side).
34 (4) Support for elements with surface-mount pads on both sides of the board. 
35 e.g. edge connectors. This also allows creation of elements with multiple
36 pins/pads having the same "number" string. This can be used, for example,
37 to create a DIP footprint that has a pad on top and bottom coincident
38 with each pin. This effectively makes the pins have elongated copper pads
39 on the top and bottom - something several home-made board makers have
40 requested.  If you do create an element with multiple pins having the
41 same number, and that number appears in the netlist, they MUST be connected
42 before the board is considered routed. See the "14DIP_oval_pad" example
43 in the "test" section of the library for an example.
45 (5) Support for the strokes library. Compiling with strokes enabled (see 
46 config.h) binds the middle button to recognize strokes for the user 
47 interface. Zoom in, Zoom out, choose the line, arrow, or via tools, rotate an 
48 object, etc. can be done with simple strokes. Check the source code 
49 (FinishStroke() in action.c) to see what the strokes are.
51 (6) Better fascilites for panning at high zoom: Shift-button3 down shows the 
52 whole layout - move the crosshair to where you want the display centered, 
53 then release the mouse button - the previous zoom level is restored, centered 
54 at the new location. You can do this while in the middle of drawing, moving, 
55 etc. You can also place the cursor in the panner area, and use the arrow keys 
56 on the keyboard to scroll half a window view per keypress. Of course you can 
57 still drag the screen with button1 with the panner tool (previously known
58 as no tool).
59 Auto-scrolling is also improved. If you want to use menus, buttons,
60 the panner, placing the pointer over them stops auto-scroll. If you
61 want to go to another window and not auto-scroll, pass the pointer
62 over one of those things before heading to the other window.
64 (7) Auto-router. The auto-router routes with the active line size, via size, 
65 and keep-away. It is a grid-less router, and will automatically avoid any 
66 existing traces, etc. that you've placed on the board. It uses all layers 
67 that are visible when invoked, so turn off any layers you don't want it to 
68 use. You can auto-route all rat lines, or selected rat lines. This was
69 written by C. Scott Ananian
71 (8) Fascilities to rip-up tracks and vias that were placed by the 
72 auto-router. You can rip-up all auto-routed tracks, or just those that are 
73 selected (and were auto-routed).
75 (9) Auto-placement code. It's broken. Don't use it.
77 (10) Many functions added to the menus that were previously accessible only 
78 through keys or typed commands. e.g. SetValue(Grid,1), DRC().
80 (11) You can turn on/off the requirement for unique element names. When 
81 unique names are required, they may be automatically generated when pasting. 
82 Turn on uniqueness for a single layout, turn off if placing several boards in 
83 a panel (or if you just want duplicate names). It's in the settings menu.
85 (12) Support for metric grids. Coordinates are still always integer mils,
86 but you can have the grid fall on a regular metric spacing to within
87 +/- 1 mil. Selectable in the "Screen" menu and also with the "SetValue(Grid, x)"
88 command; the value x is still in mils, but it's floating point now. Also
89 the concept of "absolute" grid has been eliminated - just align it where
90 you want.
92 (13) Support for viewing the soldermask. The Screen menu has a selection for
93 turning on/off the display of the solder mask. You can also change the
94 size of mask holes when the mask is displayed by using the
95 "ChangeClearSize(what, change)" function (k key). If the mask is not
96 displayed, this function changes polygon clearances as before. For example
97 you could elliminate all via soldermask holes by selecting everything
98 (make sure vias are turned on), then typing the command:
99 ":ChangeClearSize(SelectedVias, 0)" There is a special case for
100 vias to change the mask diameter equal to the via diameter, by using
101 +0 as the size change.
103 (14) Support for creation/addition of netlist by drawing rat lines.
104 Select "netlist" from the drawing layer, and use the line tool to
105 add nets. Undo removes the rat, but not the created net. To delete
106 a netlist entry, select the connection in the netlist window and
107 hit the backspace key. The "netlist" layer must be the active layer
108 to delete connections like this. This is NOT the recommended way
109 to create a netlist, but a lot of people asked for it.
111 (15) Support for snapping the crosshair to pins/pads even when they're not on
112 grid. Selectable in the "Settings" menu. Thanks to Borges for this
113 great idea.
115 (16) Doesn't draw negative lines and arcs in print output unless
116 necessary. It still does this for all pads though. Doesn't technically
117 matter, but there are a lot of bogus gerber viewers out there and
118 people that are easily confused by gerber files that completely meet
119 the specification.
121 (17) Added a "Lock" feature that lets you lock an object so it
122 can't be selected, moved, or modified. Very handy for making a
123 board-outline element (e.g. pc104 card) invisible to the Arrow
124 tool.
126 (18) lots of bug fixes (plus, no doubt, lots of newly introduced ones).
128 (19) a tool (in the tools folder) for converting to/from ncap files
129 for auto-routing with MUCS-PCB. I have not tried this myself. Written
130 By Luis Claudio G. Lopes
132 (20) A program for quickly generating QFP elements. Its invoked
133 from the old library (~generic/qfp menu, generic)
135 (21) The old imake based build system has been replaced by a GNU
136 autoconf/automake build system.  This should simplify the installation
137 and provide greater portability.
138   
139   Quick and dirty explanation of some as-yet undocumented features:
140   
141 Quick and dirty explanation of some as-yet undocumented features:
143 Netlist window: double-click on a net-name to enable/disable it. A "*" 
144 appears next to the name when it is disabled. Disabled means rats nests will 
145 ignore the net. Click on a connection to select it (and center it) in the 
146 layout window. "Finding" a connection starting from a pin or pad will
147 select it in the netlist window.
149 The "j" key controls whether a line (arc) clears (plow through) polygons or 
150 touches them. Newly created lines and arcs follow the setting in the 
151 "settings" menu. Put the cursor over the line or arc you want to change, then 
152 hit the "j" (j for join) key.
154 The "k" key controls the width of clearance around a line (arc) when it 
155 plows. "k" key increases clearance by 2, Shift-K decreases it by 2, also 
156 works for pins and vias piercing polygons. The initial value for new objects 
157 (but not element pins/pads which is in the element definition)
158 is controlled by the "keepaway" setting, changeable in the "sizes" menu.
160 When drawing lines, you can start a new anchor point without drawing from 
161 the previous point by either clicking button3, or Ctrl-button1. DON'T
162 USE BUTTON2 - that would be wrong, even if it sort of works.
164 The Arrow tool is for selecting/deselecting objects, and moving them. 
165 Shift-click to add to the existing selection. You can click-drag to draw 
166 boxes for box selection. If you click-drag on an already selected item, you 
167 will move the selection. If you click-drag on an un-selected item, you will 
168 move that item without selecting it. This last technique is the only way to 
169 move a point (e.g. end point of a line), and is also the only way to perform 
170 moves with rubber-banding (i.e. rubber-banding doesn't work with selections). 
171 Moving a selection actually cuts it to a special paste buffer, then pastes it 
172 at the new location. Always start a box selection by clicking in an empty 
173 region of the board. It may be desireable to turn off some visibility in 
174 order to simplify the box selection operation.  You can also lock
175 an object to make it invisible to the Arrow tool (so box selections can
176 begin over the object). If you don't configure for
177 strokes, the middle button is bound to the arrow tool.
179 To move an element or silk text to the opposite side of the board, use the 
180 "b" key (b for backside) to send it to the opposite side. You can also cut an 
181 object to a buffer, switch viewing sides (tab), then paste it. The buffer can 
182 be used this way to flip layout traces to the other side too, although if 
183 layer groups are used, the precise layer they appear on may not have the 
184 color you want, but the connectivity should not change.
187 Installation tip: BE SURE TO INSTALL THE NEW X11 RESOURCE FILE - run
188 make install to do this. If you just want to test without installing,
189 run the pcbtest.sh script in the src directory.