Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Profiles can have an arbitrary (nonemptynon zero) number of handles, with which can access any available transformations, including non-interactive (for example, coordinate axes). Filtering of the handles in the current profile can be done by using filters by type of transformation from the selector settings dialog.

Filtering          Filtering handles of the current profile by type of transformation User


A user can create his own profiles or modify existing ones. There are, however, certain specific characteristics of profile loading that need to be observed. To save time on reading the TCW file, profiles are unloaded only when the application is closed. Otherwise they would have to be opened/closed upon each activation of the corresponding dragger (for example, selector)tool. This would have slowed down the work significantly. So if a profile is already uploaded to memory, reloading it (for instance, after editing) is possible only after restarting the application. New A new profile can be set up without application restart.
When we give user the ability to develop profiles, it is desirable to also provide a set of development tools. For example, 'Reload profile' button and the ability to create current profile report, which would show the number of handles, loading errors, etc. I hope this will be added in future.

...

an application restart.

Samples

The Samples folder contains several examples of different profiles. It makes sense to start all new templates from by using the template.tcw, which contains the minimum set of handles and also includes all required variables (graphic`s custom properties).

Template                      Template.TCW profile

Defined custom properties.
AnchorOLE_LINK27OLE_LINK27 AnchorOLE_LINK28OLE_LINK28 in the Database Define Fields dialog


The MoveRotate2D.TCW sample demonstrates the possibility to create of creating a selector in a "protractor" style. It contains 12 handles for movement along axis, positioned at every 30 degrees, and a handle for rotating around the Z axis.

AnchorOLE_LINK25OLE_LINK25 AnchorOLE_LINK26OLE_LINK26 AnchorOLE_LINK33OLE_LINK33                      MoveRotate2D.TCW profile

 
The FlatGrid3x3.TCW example demonstrates the possibility to create a flat 5x5 grid from handles for accurate movement in the XY plane (reference point). Grid spacing is AnchorOLE_LINK31OLE_LINK31 AnchorOLE_LINK32OLE_LINK32 1 is 1 in. A specific feature of this grid is that the distance between handles (1 in) does not change when zooming in/out. Ability to set fixed values of coordinates (in a selector coordinate system) allows for placing selector handles in at critical points for drawing objects (for example, focal plane of the lens or focuses of an ellipse).

AnchorOLE_LINK34OLE_LINK34 AnchorOLE_LINK35OLE_LINK35 AnchorOLE_LINK29OLE_LINK29 AnchorOLE_LINK30OLE_LINK30                       FlatGrid3x3.TCW profile  


    
AnchorOLE_LINK52OLE_LINK52 AnchorOLE_LINK53OLE_LINK53 FlatGrid3x3.TCW profile, shown dynamically.
Animated GIF (Animation only in HTML version)

...

...

Layers

...

All profiles that are distributed with TurboCAD have a certain system of layers. Each handle has its layer. This provides a way to hide unnecessary handles.
AnchorOLE_LINK46OLE_LINK46
AnchorOLE_LINK47OLE_LINK47Layers whose names have the "handle_") prefix are used for handles. For example, "handle_MoveX" AnchorOLE_LINK50OLE_LINK50 AnchorOLE_LINK51OLE_LINK51 layer  layer contains the handle for movement along the X axis.
Layers whose names have the " AnchorOLE_LINK48OLE_LINK48 AnchorOLE_LINK49OLE_LINK49part_") prefix are used for parts of handles. For example, "part_MouseIn" layer contains geometry that becomes visible when the cursor hovers over the handle.

Fragment of layer table from a profile.
It should be noted that this system of layers exists only as an added convenience for profile development. When a profile is uploaded into the application, layer 0 is assigned to all handles.

...

When a profile is uploaded into the application, the loader analyzes graphics and uses certain criteria to identify handles. A handle is a 'group' graphic that has a certain set of subgroups and a set of custom properties. Graphics that do not meet these criteria are ignored.
AnchorOLE_LINK65OLE_LINK65 AnchorOLE_LINK66OLE_LINK66 A  A handle has to have several mandatory AnchorOLE_LINK56OLE_LINK56 custom mandatory custom properties (of text type) that define its name, position, transformation type, etc. In addition to mandatory custom AnchorOLE_LINK57OLE_LINK57 propertiescustom properties, there are optional properties. These properties are used by the program to determine the purpose, behavior, appearance of the handle, and its response to mouse movement. User can set other admissible values and change handle behavior that way.

AnchorOLE_LINK60OLE_LINK60
Set of variables for AnchorOLE_LINK58OLE_LINK58 AnchorOLE_LINK59OLE_LINK59 Boundary Box handle.

Set of variables for AnchorOLE_LINK94OLE_LINK94 AnchorOLE_LINK95OLE_LINK95 MoveX handle.
The set of variables is not final, it can be changed and expanded.
A handle has to include a certain set of subgroups. Each of the subgroups is responsible either for drawing of for the behavior of the handle. Type of the subgroup is set by the AnchorOLE_LINK67OLE_LINK67 AnchorOLE_LINK68OLE_LINK68 handle_the handle_part variable:

'handle_part variable'
This variable can have one of the following values:
AnchorOLE_LINK92OLE_LINK92 AnchorOLE_LINK93OLE_LINK93mouseout AnchorOLE_LINK73OLE_LINK73 AnchorOLE_LINK74OLE_LINK74
mouseout - visible geometry when the cursor is outside the handle
AnchorOLE_LINK88
OLE_LINK88 AnchorOLE_LINK89OLE_LINK89mouseover AnchorOLE_LINK75OLE_LINK75 AnchorOLE_LINK76OLE_LINK76mouseover - visible geometry when the cursor is over the handle
active AnchorOLE_LINK77OLE_LINK77 AnchorOLE_LINK78OLE_LINK78 - visible geometry while dragging AnchorOLE_LINK85OLE_LINK85 AnchorOLE_LINK86OLE_LINK86 AnchorOLE_LINK87OLE_LINK87dragging (optional)
static- AnchorOLE_LINK81OLE_LINK81 AnchorOLE_LINK82OLE_LINK82 visible  visible geometry (optional)
coordsystem AnchorOLE_LINK79OLE_LINK79 AnchorOLE_LINK80OLE_LINK80 AnchorOLE_LINK83OLE_LINK83 AnchorOLE_LINK84OLE_LINK84 - AnchorOLE_LINK90OLE_LINK90 AnchorOLE_LINK91OLE_LINK91 invisible  - invisible geometry, defining the coordinate system of the handle
highlight_area - invisible geometry, turns on mouseover, when the cursor is over it. If this part is absent, mouseout (optional) is used instead.
visibility_area - reserved (optional)

Parts of MoveX handle