Aaron, Diederik, Terry and David,
Thanks so much for your replies to my question about the technical drawing / snapping, and also for considering it seriously; I really appreciate it.
I'd like to say that I really like the inkscape UI and I'm certainly not suggesting any substantial change in the way this works. What would be useful is if whenever inkscape asks the user to input a point (whether the translation origin of an existing object, start point of a new polyline, or centre of rotation etc.) some module could provide "constraints" which guide the placing of these points. Two current possibilities are the page grid / guidelines and the nodes which define the object itself. A third are "geometric" constraints which are defined by the objects themselves, things like "nearest", "endpoint", "centre", "perpendicular", "intersection".
These make it very easy to ensure objects are actually touching, and also that technical sketches look right / symmetrical when they should.
I think Terry's feature request sums it up (thanks for submitting this), but there are a couple of points which I might add if possible (I don't think I can add comments to it, so perhaps I have to submit a new one?) :
- it can be useful to have multiple snaps turned on at once, e.g. endpoint and gridpoint, so if a line ends very close to a gridpoint it can be hard to tell which snap is in effect; this is where the change in cursor shape helps to distinguish one from the other (and a key like 'ALT' cycles between different possibilities valid at that 'pixel' on the screen). This would also be useful if a current inkscape "node" snap lies close to a "gridpoint" snap.
- when selecting you don't always touch near the point you want to select; you touch the object which defines the constraint. That sounds a little confusing at first, but let me explain with an example ... !
Translations / rotations - lets say you have a series of concentric circles which form a wheel and you want to move this so the centre touches the end of an axle you have drawn elsewhere on the screen. Firstly you would select all objects to move and then the inkscape transform / translate tool. Then enable "centre" snap (press 'c') and hover above the outline of one circle (since the centre is an intrinsic property of that circle - inkscape would check which snaps are enabled and which shapes are within x pixels of the cursor and then display an appropriate snap for that position). In this case a snap symbol appears in the centre of the circle _even though the cursor is not close to here_ you click and pick the object up from it's centre. Inkscape presumably knows internally about the centre of circles, regular polygons, rectangles etc.. You then drag the object close to the axle and enable "endpoint" (press 'e') snap at which point the cursor jumps to the end of the axle and you click to place it there. This guarantees everything is perfectly aligned and touching regardless of zoom ! Obviously if you tried clicking _in_ the centre of the circle for a "centre" snap instead inkscape couldn't possibly know which object this centre related to.
New objects - as previously said it's very useful to be able to guantee a new line touches tangentially to a circle, so you start drawing the line and when prompted for the second point hover over _anywhere over the circle outline_ and the snap jumps to the nearest point which is tangential. "Nearest" (point on object to cursor) snaps are probably harder because the points aren't discrete in quite the same way, but still allow you to gaurantee there are no gaps, even if drawing by eye, and then moving the final control point.
As Terry said I think a key thing is that these are properties of the type of shape, and not always of the nodes of the shape itself.
I've attached a screenshot of autosketch, just to show what I am used to (the square indicates the snap is locked to an endpoint even though it also matches a gridpoint snap). I certainly don't need CAD and miss many of the great inkscape features but drifted toward this kind of program because it was so easy to get everything lined up and touching. I've spoken to a few fellow postgrads, and we all think these are very useful features for technical illustration where we are used to CAD like snapping tools but miss the gradient fills / paint bucket etc. to make work look nice.
One thing which may be of interest from the screenshot (although probably a little too cad like !) is the ability to define shapes in different ways. As in inkscape shapes are defined by a series of points (nodes on a curve, opposite corners in a rectangle), but if you hover over the appropriate tool (top left) it allows you to set different sets of these defining points. In the screenshot I'm over the circle tool and you can see that it may be defined by a centre and point on the circle, three points on the circle, two tangent lines etc. This again is very flexible.
I hope this has made sense, and I hope I haven't muddied the water - I don't want to overcomplicate at all but it turns out this is a little more subtle once you think about it. I would love to hear any thoughts please !
This is certainly something which could be considered piecemeal - endpoint / midpoints / centres are doubtless easier than any others. Should I file a feature request saying all of this, or is it too indigestible?
Alex
I'm very new to mailing lists, so I'm not sure whether it's normal to reply to individual messages; my apologies for doing so if not !