If you want to understand details of the group design, please read the group spec: http://repo.hu/projects/cschem/design/03_drawing.html#des3:53 1. Convert to group Draw some lines/arcs/polygons/texts, select them and use the following menu item to convert them into a custom group: Select/Convert selection to/Custom group. After the conversion the group is moved and transformed as a singe object, right click brings up the group-specific context menu. The conversion is undoable. 2. Convert to symbol Same proces as above, but use the symbol target in the conversion menu. You will get largely the same result, with some side effects: - objects drawn with the sheet-decor pen are switched to use the sym-decor pen (so grey objects will turn to green on the default sheet) - attribute role=symbol is added to the group - attribute name=REFDES is added to the group - a floater dyntext printing the name attribute is added to the group (You can edit the name: right click over the group, propedit, then edit the value of the name attribute, it's down the list on the left.) 3. Convert to terminal Same menu, but "symbol" menu item. Works the same as convert to symbol, except: - the group role is set to terminal - the value of the newly added name attribute is set to PINNAME - sheet-decor pen names are changed to term-decor 4. Group-in-group If your selection includes groups at the time you are converting into a group, you create group-in-group. You are free to do this to any depth, but the most typical use case is creating symbols with terminals. For example this is how you can create a resistor symbol: - draw a horizontal line - select and convert it into a terminal - make a copy of it (using ctrl+drag&drop or convert a second one) - use the property editor to change the name to 1 and 2 - draw a rectangle - use the property editor on the rectange to turn off the has_fill property - arrange things: drag&drop your terminals to be on the sides of the rectangle - select them all - convert to symbol - arrange REFDES to wherever you want 5. place terminal shorthand Being able to draw any shape for a terminal is a sexy feature, but not something you want to do too often. It would be rather exhausting to follow the procedure described in point 3 to get the simplest, commonly used "single line" terminal. The general sch-rnd policy on this is: everything is general and allows you to have maximum flexibility, but we provide shorthands for the most common things so when you don't need anything fancy you don't need to click a lot. For terminals, the shorthand is called "place terminal", or {p t}, or edit menu/place template/place terminal. This creates and places a 4 mm long single line terminal. It's the same thing that you could do with point 3 if you drew a 4 mm long horizontal line. Note: place template always places the new object on the sheet, so you want to do this before converting to symbol. Yes, a terminal on a sheet is a valid construct (this will be an important thing in hierarchic design later on). Known bug: when invoked from the menu, it doesn't ask for clicking coords but places in the last known crosshair coords. 6. Place attribute text So what if you want to print the value of your resistor symbol? In cschem attributes don't imply drawing objects, so there's no such thing as "visible" attribute. You need to create a dyntext, as described in test req #5. But creating such attribute printing dyntext all the time is also exhausting so very much like in point 5 above, we have a place attribute in the same menu, assinged to {p a}. So you could re-do point 4, but before the symbol conversion you could: - place an attribute text template - propedit it or use {e t} over it and change the template so it doesn't print %../A.key% but %../A.value% - after the symbol conversion propedit the symbol group and click on 'add' on the bottom and enter "value" for key and "4k7" for value -> that adds an attribute to your symbol value=4k7, and your attribute text is printing it 7. group transformations Groups can be rotated and mirrored and any combination of the operations should yield the expected result. This should work on group-in-group (only the parent group can be transformed obviously, as group lock applies to embedded groups). 8. floaters Object with the floater property set are not subject to the group lock. This is the same concept as floaters in pcb-rnd. Some dyntext attribute printout text objects could be marked to be floaters before the conversion so you can move and transform them individually when they are already in the symbol or terminal group. Floaters in a group-in-group setup ignore every level of group lock. For example if you have a floater dyntext in your terminal that prints the terminal name ("pin mumber"), and the whole terminal is a non-floater group within a symbol group, your terminal name dyntext is still movable because it's a floater. The default behavior for auto-generated name dyntexts is to have them floaters. This is what conversions and template placers do. If you want to "hide" a printout, and it is a floater, you just delete it (same as in pcb-rnd). Later on, when we will have the attribute dialog implemented, we will have a shorthand in that dialog to auto-create floater dyntext for any attribute in existing groups. This will be the equivalent function for other editors' "visibility" flag. (Except you can have more copies printed of the same attribute, e.g. with different font or color, and a single dyntex ins't limited to print a single attribute, it's really a full template string). 9. dyntext edit with {e t} If you press {e t} on a text object that has the dyntext property set to true, a more advanced text eidting dialog box is popped up. It helps you edit the template, or the substitution part. Later it will allow you to pick a different substitution from the attribute dialog or quick-edit the value of the attribute the template substitution refers to. 10. break up The reverse transformation of conversion is called "break up", just like in pcb-rnd. You can select a group (any group: custom group, or symbol or terminal) and use the menu: Select/Break up selected/groups. The group is deleted and you will get back your individual objects on sheet, in-place. The operation is undoable. Group-in-group aspect: the operation breaks up one level of groups, the top level. Example: if you have a symbol with termianl groups in it and you break it up, the symbol is broken up so you get back: - the drawing objects you used for symbol body - the text objects you used for printing attributes - and the terminal _groups_ (In a subsequent step you can break up your terminals of course). The difference between group and object breakup: group breakup breaks up only groups, object breakup breaks up both groups and polygons. When a polygon is broken up, the polygon is removed and replaced with individual line objects that made up the contour of the polygon.