TechDraw LengthDimension

Description
The TechDraw LengthDimension tool adds a linear dimension to a View. The dimension may be between the distance between two vertices, the length of one edge or the distance between 2 edges. The distance will initially be the projected distance (ie as shown on the drawing), but this may be changed to the actual 3D distance using the tool.



Usage

 * 1) Select the points or edge which define your measurement.
 * 2) There are several ways to invoke the tool:
 * 3) * Press the button.
 * 4) * Select the option from the menu.
 * 5) A dimension will be added to the View. The dimension may be dragged to the desired position.
 * 6) If needed, add tolerances as described in this page.

To change the properties of a dimension object either double-clicking it in the drawing or in the Tree view. This will open the dimension dialog:

Dimension dialog
The dimension dialog offers the following settings:



Tolerancing

 * Theoretically Exact: If checked, is specifies the dimension as theoretically exact dimension. As such, it shall not bear any tolerances. The dimension will be displayed by a frame around the value: [[Image:TechDraw_theoretically_exact.png|100px]]


 * Equal Tolerance: If checked, the over- and undertolerance are equal and the negated value of the overtolerance is used as undertolerance. The display will be [[Image:TechDraw_equal-tolerance.png|100px]], otherwise it will be [[Image:TechDraw_Non-equal-tolerance.png|80px]].


 * Overtolerance: The amount by which the dimension may be larger.


 * Undertolerance: The amount by which the dimension may be smaller.

Formatting

 * Format Specifier: How the dimension value will be formatted. By default the specifier is whereby  is the number of decimals. For the formatting syntax see this Wikipedia page. There is also an additional  format that prints the specified number of digits after the decimal separator and removes trailing zeros. For example,  means that at most 2 decimals will be printed and any trailing zeros will be cut off.


 * Arbitrary Text: If checked, the dimension is replaced by the content of the Format Specifier field.


 * OverTolerance Format Specifier: How the overtolerance value will be formatted. By default the specifier is whereby  is the number of decimals. For the formatting syntax see this Wikipedia page.


 * UnderTolerance Format Specifier: How the undertolerance value will be formatted. By default the specifier is whereby  is the number of decimals. For the formatting syntax see this Wikipedia page.


 * Arbitrary Tolerance Text: If checked, the tolerances are replaced by the content of the OverTolerance Format Specifier UnderTolerance Format Specifier fields.

Display Style

 * Flip Arrowheads: Flips the direction in which the dimension line arrows are pointing. By default they are inside the dimension line/arc and pointing outwards.


 * Color: The color for lines and text.


 * Font Size: The dimension text size.


 * Drawing Style: The standard (and its style) according to which the dimension is drawn. See the property Standard And Style for details.

Lines

 * Override Angles: If checked, the usual angles for the dimension line and extension lines will be overridden by the specified values.


 * Dimension line angle: Override value for angle of dimension line with view X axis (in degrees).


 * Use default: Set dimension line angle to the usual angle.


 * Use selection: Set dimension line angle to match the angle of the selected edge (or 2 vertices) in the view.


 * Extension line angle: Override value for angle of extension lines with view X axis (in degrees).


 * Use default: Set extension line angle to the usual angle.


 * Use selection: Set extension line angle to match the angle of the selected edge (or 2 vertices) in the view.

Data

 * : Horizontal position of the dimension text relative to the View.
 * : Vertical position of the dimension text relative to the View.
 * : Length, radius, diameter, etc. Not normally manipulated by the end user.
 * : How the measurement is performed. Not normally manipulated directly by the end user.
 * - based on 3D geometry or
 * - based on the drawing


 * : Specifies a theoretically exact (or basic) dimension.
 * - a common dimension by default, possibly with tolerances.
 * - a theoretical value. As such, it shall not bear any tolerances. The dimension will be displayed by a frame around the value: [[Image:TechDraw_theoretically_exact.png|100px]]


 * : If over- and undertolerance are equal. Then the negated value of the overtolerance is used as undertolerance.
 * - the negated value of the is used as . The display will be [[Image:TechDraw_equal-tolerance.png|100px]]
 * - the is taken into account. The display will be [[Image:TechDraw_Non-equal-tolerance.png|80px]]


 * : The amount by which the dimension may be larger.
 * : The amount by which the dimension may be smaller.
 * : Marks whether the dimension represents a common or an inverted value.
 * - the ordinary value is used. For length it is a positive number, for angle the oblique value (0° - 180°).
 * - the inverted value is used. For length a negative number, for angle the reflex value (180° - 360°).


 * : How the dimension value will be formatted. See Formatting.
 * : Like, but for overtolerances.
 * : Like, but for undertolerances.
 * : Whether the dimension is replaced by the content of the Format Spec field.
 * - the content of the Format Spec is used to format the actual dimensional value.
 * - the content of the Format Spec will be displayed as text instead if the dimension value.


 * : Like, but for the tolerance.


 * : Whether the direction of dimension and extension lines is overridden.
 * - the directions are computed as usual.
 * - the directions are overridden by LineAngle and ExtensionAngle property values.


 * : angle of dimension line with view X axis (in degrees).
 * : angle of extension line(s) with view X axis (in degrees).

View

 * : Sets whether the dimension is visible. - visible,  - hidden.


 * : The name of the font to use for the dimension text.
 * : Dimension text size.
 * : Adjusts the gap between the dimension points and the start of the extension lines. The gap is this value times the line width.
 * : Adjusts the gap between the dimension points and the start of the extension lines. The gap is this value times the line width.
 * : Dimension line weight.
 * : Color for lines and text.
 * : Specifies the standard (and its style) according to which the dimension is drawn:
 * - drawn according to the standard ISO 129-1, text is rotated to be parallel with the dimension line tangent.
 * - drawn in compliance with ISO 129-1, text is always horizontal, above the shortest possible reference line.
 * - drawn according to the standard ASME Y14.5M, text is horizontal, inserted in a break within the dimension line or arc.
 * - drawn in compliance with ASME Y14.5M, text is horizontal, short reference line is attached to one side's vertical center.


 * : Rather universal property specifying how much space the dimension drawing may take up:
 * - no lines or arrows are drawn, only the bare dimension value is displayed.
 * - for lengths and angles a single headed line connecting the dimensional value and the end point's virtual extension line is drawn. The extension line itself is not added.
 * Diameters are rendered following  extent, radii following   extent.
 * - for lengths and angles a double headed line (or arc) connecting the start and end point's virtual extension lines is drawn, though the extension lines themselves are not added.
 * Diameters are drawn with a minimal single headed line from dimensional value to the closest point on circle, radii as with  extent.
 * - for lengths and angles a single headed line connecting the dimensional value and the end point's extension line is drawn along with the extension line itself.
 * Diameters are drawn with a single headed line from the center to the closest point on circle, radii with a minimal single headed line from dimensional value to the closest arc point.
 * - the default value. For lengths and angles a double headed line (or arc) connecting the start and end point's extension lines is drawn, the extension lines themselves as well.
 * Diameters are drawn as double headed lines striking the center and connecting the closest and farthest points on the circle.
 * Radii are drawn as a single headed line from center to the closest arc point.
 * - Only diameters support this value, rendering them in a horizontal or vertical length-like way. Other dimension types are rendered as with  extent.


 * : By default the value inside the dimension line/arc means the arrows pointing outwards. If placed outside the dimension line/arc, the arrows point inwards the dimension line/arc.
 * - Let the direction of arrows to be selected automatically according to the rule above.
 * - Override the automatically chosen direction and force the opposite one.

Limitations
Dimension objects are vulnerable to the "topological naming problem". This means that if you modify the 3D geometry the faces and edges of the model may be renamed internally; if a dimension is attached to an edge that is then modified, the dimension may break. In general, it is not possible to keep the projected 2D dimensions synchronized with the actual 3D objects.

Therefore, it is recommended that dimensions be added when the 3D model is no longer being modified.

Workaround
If you want to keep a TechDraw view with dimensions that won't break, you need to dimension an object that won't change.
 * Select the object that you want to project, then switch to the [[Image:Workbench_Part.svg|24px]] Part Workbench and use . This will create a single object that is not parametric, that is, no longer editable.
 * Select this copy, then use TechDraw View, and add the desired dimensions.
 * If the original 3D model is modified, the modifications won't affect the simple copy, nor the dimensions in the TechDraw view.

See Landmark Dimensions for another approach to circumventing the topological naming issue.

Scripting
TechDraw API and FreeCAD Scripting Basics.

The Length Dimension tool can be used in macros and from the Python console by using the following functions: