Pierre Boulenguez a écrit :
bulia byak a écrit :
On Wed, 26 Jan 2005 12:24:44 +0100, Pierre Boulenguez <boulenguez@...558...> wrote:
- geometrical constraints (draw a tangent line, a perpendicular ...), Rhinoceros3d has a very good look&feel for this.
Might be nice but I don't really see how this would fit our interface. I don't know anything about Rhinoceros3d; can you elaborate?
- mathematical characters. For this, xfig behavior is good to me as it allows to insert Latex characters computed externally. The problem here is that it cannot be integrated into SVG isn't it ?
In principle it's possible to do an extension that would store LaTeX fragments in extension attributes, run TeX to convert them to EPS, and import that EPS as an object. This was discussed here some time ago. All we need is a programmer motivated to do that.
- a simple way to add an arc between two lines to represent angles (very important :-) ).
That's easy. Draw a circle from the tip of the angle with Ctrl+Shift, then drag the two handles at the right side of the circle to create an arc. See the Shapes tutorial for more details.
Ok, Rhinoceros3D is a modeler as blender is, except that it has an awesome interface. I never experienced such a behavior on any software I ever used !!
As on other app, each ui button match a "function" but with Rhinoceros3D, the "function" can also be called directly via the built in command line. Actually, first come the comand line function, and then, a button is sometime added as a "shortcut".
Parameter of a function can be (example)
- a 3d point, you can input either by clicking in the 3d scene or entering digits in the command line
- a color
- a length (1d point)
- a scene object. Here let me give you some examples : o You want to use the "scale" function. The input are a scale factor and an object on which you want scaling to occur. It can be any object as scaling is available for all objects. The operation is then to select an object (via click in the scene or ID in the command line ) and input a "length". o You might want to trace the bisectrice of an angle. The inputs are then two "line" objects. o You want to draw a tangent, one of the inputs is of type "curve" but there are many way to position a tangent on a curve. It then exists multiple similar "tangent" functions, just using different parameters.
A "function" doesn't necessarly posess a "shortcut" button as it is always possible to access it via the command line.
Those who does, let's say "draw an arc", are scrolling buttons meaning that when you click on it, you access to a list of sub-buttons as it exists multiple "draw an arc" functions, depending on different parameters ( as the "tangent" function does). Of course, buttons and sub-buttons use schematic idioms to make the interface intuitive.
This design have multiple benefits, I just point out lightweight but very very powerful user interface, perfect adequation to C++ and, as a consequence, a developer friendly plug-in interface.
To make your own opinion, you might have a look at the Rhinoceros3D SDK.
I don't know if this help, but it was my only goal. Pierre
PS: thank you for the tip to draw an angle :-)