Salome HOME
Task 2.1. Creation of ellipses and arcs of ellipse.
[modules/shaper.git] / src / SketchPlugin / plugin-Sketch.xml
index d8c4ede48e67a5657f3edd503ab44ce6fb4905da..e33f3dede8309a80a9095bfaaa38f0ee984f3d84 100644 (file)
 
 <plugin>
   <workbench id="Sketch">
-    <group id="Basic">
+    <group id="Linear geometry">
       <feature
         id="Sketch"
-        nested="SketchPoint SketchLine SketchCircle SketchArc SketchConstraintLength SketchConstraintRadius SketchConstraintDistance SketchConstraintParallel SketchConstraintPerpendicular SketchConstraintRigid SketchConstraintHorizontal SketchConstraintVertical SketchConstraintEqual SketchConstraintTangent SketchConstraintFillet SketchConstraintCoincidence SketchConstraintMirror SketchConstraintAngle SketchMultiRotation SketchMultiTranslation"
+        nested="SketchPoint SketchIntersectionPoint SketchLine
+                SketchCircle SketchMacroCircle SketchArc SketchMacroArc
+                SketchEllipse SketchMacroEllipse
+                SketchRectangle
+                SketchProjection
+                SketchConstraintLength SketchConstraintRadius SketchConstraintDistance
+                SketchConstraintParallel SketchConstraintPerpendicular
+                SketchConstraintRigid SketchConstraintHorizontal SketchConstraintVertical
+                SketchConstraintEqual SketchConstraintTangent
+                SketchFillet SketchConstraintSplit SketchTrim
+                SketchConstraintCoincidence
+                SketchConstraintMirror SketchConstraintAngle
+                SketchMultiRotation SketchMultiTranslation
+                SketchConstraintCollinear SketchConstraintMiddle"
         when_nested="accept abort"
         title="Sketch"
         tooltip="Create sketch"
-        icon=":icons/sketch.png">
+        icon="icons/Sketch/sketch.png">
         <sketch-start-label id="External" title="Select a plane on which to create a sketch" tooltip="Select a plane on which to create a sketch">
           <validator id="GeomValidators_Face" parameters="plane"/>
         </sketch-start-label>
-        <error_label id="SolverError"/>
+        <label id="SolverDOF"/>
+        <label id="SolverError" styleSheet="color : red; font : bold"/>
         <validator id="SketchPlugin_SolverErrorValidator"/>
-      <!--icon=":pictures/x_point.png"-->
       </feature>
-      <feature id="SketchPoint" title="Point" tooltip="Create point" icon=":icons/point.png">
-        <sketch-2dpoint_selector id="PointCoordindates" title="Point" tooltip="Point coordinates"/>
+
+      <!-- SketchPoint -->
+      <feature id="SketchPoint" title="Point" tooltip="Create point" icon="icons/Sketch/point.png">
+        <sketch-2dpoint_selector id="PointCoordinates" accept_expressions="0" title="Point" tooltip="Point coordinates"
+                                 enable_value="enable_by_preferences"/>
         <boolvalue id="Auxiliary" label="Auxiliary" default="false" tooltip="Construction element" obligatory="0"/>
       </feature>
-      <feature id="SketchLine" title="Line" tooltip="Create line" icon=":icons/line.png">
-        <sketch-2dpoint_selector id="StartPoint" title="Start point" tooltip="Start point coordinates" previous_feature_param="EndPoint"/>
-        <sketch-2dpoint_selector id="EndPoint" title="End point" tooltip="End point coordinates"/>
+
+      <!-- SketchLine -->
+      <feature id="SketchLine" title="Line" tooltip="Create line" icon="icons/Sketch/line.png">
+        <sketch-2dpoint_selector id="StartPoint" accept_expressions="0" title="Start point" tooltip="Start point coordinates"
+                                 enable_value="enable_by_preferences"/>
+        <sketch-2dpoint_selector id="EndPoint" accept_expressions="0" title="End point" tooltip="End point coordinates"
+                                 enable_value="enable_by_preferences"/>
+        <labelvalue id="LineLength" accept_expressions="0" label="Length:" default="computed" icon="icons/Sketch/distance_value.png"
+                     tooltip="Line length" obligatory="0" enable_value="false"/>
         <boolvalue id="Auxiliary" label="Auxiliary" default="false" tooltip="Construction element" obligatory="0"/>
         <validator id="GeomValidators_Different" parameters="StartPoint,EndPoint"/>
       </feature>
-      <feature id="SketchCircle" title="Circle" tooltip="Create circle" icon=":icons/circle.png">
-        <sketch-2dpoint_selector id="CircleCenter" title="Center" tooltip="Center coordinates"/>
-        <point2ddistance id="CircleRadius" first_point="CircleCenter" label="Radius:" min="0" step="1.0" default="0" icon=":icons/radius.png" tooltip="Set radius">
-          <validator id="GeomValidators_Positive"/>
-        </point2ddistance>
+    </group>
+    <group id="Circular geometry">
+      <!-- SketchCircle is a hidden feature. It is created inside SketchMacroCircle. -->
+      <feature id="SketchCircle"
+               title="Circle"
+               tooltip="Create circle"
+               icon="icons/Sketch/circle.png"
+               internal="1">
+        <sketch-2dpoint_selector id="circle_center"
+                                 title="Center"
+                                 tooltip="Center coordinates"
+                                 accept_expressions="0"
+                                 enable_value="enable_by_preferences"/>
+        <labelvalue id="circle_radius"
+                    icon="icons/Sketch/radius.png"
+                    label="Radius:"
+                    tooltip="Set radius"
+                    default="computed"
+                    accept_expressions="0"
+                    enable_value="enable_by_preferences">
+        </labelvalue>
         <boolvalue id="Auxiliary" label="Auxiliary" default="false" tooltip="Construction element" obligatory="0"/>
       </feature>
-      <feature id="SketchArc" title="Arc" tooltip="Create arc" icon=":icons/arc.png">
-        <sketch-2dpoint_selector id="ArcCenter" title="Center" tooltip="Center of a circle"/>
-        <sketch-2dpoint_selector id="ArcStartPoint" title="Start point" tooltip="Start point"/>
-        <sketch-2dpoint_selector id="ArcEndPoint" title="End point" tooltip="End point"/>
+      <!-- SketchMacroCircle -->
+      <feature id="SketchMacroCircle"
+               icon="icons/Sketch/circle.png"
+               title="Circle"
+               tooltip="Create circle">
+        <toolbox id="circle_type" modified_in_edit="edit_circle_type">
+          <box id="circle_type_by_center_and_passed_points"
+               icon="icons/Sketch/circle_pt_rad_32x32.png"
+               title="Center and passed points">
+            <sketch-2dpoint_selector id="center_point"
+                                     reference_attribute="center_point_ref"
+                                     title="Center point"
+                                     tooltip="Center point coordinates"
+                                     accept_expressions="0"
+                                     enable_value="enable_by_preferences"/>
+            <sketch-2dpoint_selector id="passed_point"
+                                     reference_attribute="passed_point_ref"
+                                     title="Passed point"
+                                     tooltip="Passed point coordinates"
+                                     accept_expressions="0"
+                                     enable_value="enable_by_preferences">
+              <validator id="SketchPlugin_CirclePassedPointValidator"/>
+            </sketch-2dpoint_selector>
+            <validator id="GeomValidators_Different" parameters="center_point_ref,passed_point_ref"/>
+          </box>
+          <box id="circle_type_by_three_points"
+               icon="icons/Sketch/circle_3pt_32x32.png"
+               title="Three points">
+            <sketch-2dpoint_selector id="first_point"
+                                     reference_attribute="first_point_ref"
+                                     title="First point"
+                                     tooltip="First point"
+                                     accept_expressions="0"
+                                     enable_value="enable_by_preferences"/>
+            <sketch-2dpoint_selector id="second_point"
+                                     reference_attribute="second_point_ref"
+                                     title="Second point"
+                                     tooltip="Second point"
+                                     accept_expressions="0"
+                                     enable_value="enable_by_preferences">
+              <validator id="SketchPlugin_DifferentReference" parameters="first_point_ref,second_point_ref"/>
+            </sketch-2dpoint_selector>
+            <sketch-2dpoint_selector id="third_point"
+                                     reference_attribute="third_point_ref"
+                                     title="Third point"
+                                     tooltip="Third point"
+                                     accept_expressions="0"
+                                     enable_value="enable_by_preferences">
+              <validator id="SketchPlugin_DifferentReference" parameters="first_point_ref,second_point_ref,third_point_ref"/>
+              <validator id="SketchPlugin_ThirdPointValidator" parameters="third_point_ref"/>
+            </sketch-2dpoint_selector>
+            <validator id="GeomValidators_Different" parameters="first_point_ref,second_point_ref,third_point_ref"/>
+          </box>
+        </toolbox>
+        <labelvalue id="circle_radius"
+                    icon="icons/Sketch/radius.png"
+                    label="Radius:"
+                    tooltip="Set radius"
+                    default="computed"
+                    accept_expressions="0"
+                    obligatory="0"
+                    enable_value="enable_by_preferences">
+          <validator id="GeomValidators_Positive"/>
+        </labelvalue>
+        <boolvalue id="Auxiliary"
+                   tooltip="Construction element"
+                   label="Auxiliary"
+                   default="false"
+                   obligatory="0"/>
+      </feature>
+
+      <!-- SketchArc -->
+      <feature id="SketchArc"
+               icon="icons/Sketch/arc.png"
+               title="Arc"
+               tooltip="Create arc"
+               internal="1">
+        <sketch-2dpoint_selector id="center_point"
+                                 title="Center"
+                                 tooltip="Center of a circle"
+                                 accept_expressions="0"
+                                 enable_value="enable_by_preferences"/>
+        <sketch-2dpoint_selector id="start_point"
+                                 title="Start point"
+                                 tooltip="Start point"
+                                 accept_expressions="0"
+                                 enable_value="enable_by_preferences"/>
+        <sketch-2dpoint_selector id="end_point"
+                                 title="End point"
+                                 tooltip="End point"
+                                 accept_expressions="0"
+                                 enable_value="enable_by_preferences"/>
+        <validator id="GeomValidators_Different" parameters="center_point,start_point,end_point"/>
+        <labelvalue id="radius"
+                    icon="icons/Sketch/radius.png"
+                    label="Radius:"
+                    tooltip="Set radius"
+                    accept_expressions="0"
+                    min="0"
+                    default="0"
+                    obligatory="0"
+                    enable_value="enable_by_preferences">
+        </labelvalue>
+        <labelvalue id="angle"
+                    icon="icons/Sketch/angle.png"
+                    label="Angle:"
+                    tooltip="Set angle"
+                    default="0"
+                    use_reset="false"
+                    obligatory="0"
+                    enable_value="enable_by_preferences"/>
+        <boolvalue id="Auxiliary"
+                   label="Auxiliary"
+                   tooltip="Construction element"
+                   default="false"
+                   obligatory="0"/>
+      </feature>
+
+      <!-- SketchMacroArc -->
+      <feature
+        id="SketchMacroArc"
+        title="Arc"
+        tooltip="Create arc"
+        icon="icons/Sketch/arc.png">
+        <toolbox id="arc_type" modified_in_edit="edit_arc_type">
+          <box id="by_center_and_points"
+               icon="icons/Sketch/arc_base_32x32.png"
+               title="Center and two points">
+            <sketch-2dpoint_selector id="center_point"
+                                     reference_attribute="center_point_ref"
+                                     title="Center point"
+                                     tooltip="Center of a circle"
+                                     accept_expressions="0"
+                                     enable_value="enable_by_preferences" />
+            <sketch-2dpoint_selector id="start_point_1"
+                                     reference_attribute="start_point_ref"
+                                     title="Start point"
+                                     tooltip="Start point"
+                                     accept_expressions="0"
+                                     enable_value="enable_by_preferences"/>
+            <sketch-2dpoint_selector id="end_point_1"
+                                     reference_attribute="end_point_ref"
+                                     title="End point"
+                                     tooltip="End point"
+                                     accept_expressions="0"
+                                     enable_value="enable_by_preferences">
+              <validator id="SketchPlugin_ArcEndPointValidator" parameters="end_point_ref"/>
+              <validator id="SketchPlugin_ArcEndPointIntersectionValidator" parameters="end_point_ref"/>
+            </sketch-2dpoint_selector>
+            <validator id="GeomValidators_Different" parameters="center_point,start_point_1,end_point_1"/>
+          </box>
+          <box id="by_three_points"
+               icon="icons/Sketch/arc_3pt_32x32.png"
+               title="Three points on arc">
+            <sketch-2dpoint_selector id="start_point_2"
+                                     reference_attribute="start_point_ref"
+                                     title="Start point"
+                                     tooltip="Start point"
+                                     accept_expressions="0"
+                                     enable_value="enable_by_preferences"/>
+            <sketch-2dpoint_selector id="end_point_2"
+                                     reference_attribute="end_point_ref"
+                                     title="End point"
+                                     tooltip="End point"
+                                     accept_expressions="0"
+                                     enable_value="enable_by_preferences">
+              <validator id="GeomValidators_Different" parameters="start_point_2,end_point_2"/>
+              <validator id="SketchPlugin_DifferentPointReference" parameters="start_point_ref,end_point_ref"/>
+            </sketch-2dpoint_selector>
+            <sketch-2dpoint_selector id="passed_point"
+                                     reference_attribute="passed_point_ref"
+                                     title="Passed point"
+                                     tooltip="Passed point"
+                                     accept_expressions="0"
+                                     enable_value="enable_by_preferences">
+              <validator id="SketchPlugin_DifferentReference" parameters="start_point_ref,end_point_ref,passed_point_ref"/>
+              <validator id="SketchPlugin_ThirdPointValidator" parameters="passed_point_ref"/>
+            </sketch-2dpoint_selector>
+            <validator id="GeomValidators_Different" parameters="start_point_2,end_point_2,passed_point"/>
+          </box>
+          <box id="by_tangent_edge"
+               icon="icons/Sketch/arc_tang_32x32.png"
+               title="Tangent with edge">
+            <sketch_shape_selector id="tangent_point"
+                                   label="Tangent point"
+                                   tooltip="Select point on line"
+                                   shape_types="vertex">
+              <validator id="SketchPlugin_ArcTangentPoint"/>
+            </sketch_shape_selector>
+            <sketch-2dpoint_selector id="end_point_3"
+                                     reference_attribute="end_point_ref"
+                                     title="End point"
+                                     tooltip="End point"
+                                     accept_expressions="0"
+                                     enable_value="enable_by_preferences">
+              <validator id="SketchPlugin_ArcEndPointValidator" parameters="end_point_ref"/>
+            </sketch-2dpoint_selector>
+          </box>
+        </toolbox>
+        <labelvalue id="radius"
+                    icon="icons/Sketch/radius.png"
+                    label="Radius:"
+                    tooltip="Set radius"
+                    accept_expressions="0"
+                    min="0"
+                    default="0"
+                    obligatory="0"
+                    enable_value="enable_by_preferences">
+        </labelvalue>
+        <labelvalue id="angle"
+                    icon="icons/Sketch/angle.png"
+                    label="Angle:"
+                    tooltip="Set angle"
+                    default="0"
+                    use_reset="false"
+                    obligatory="0"
+                    enable_value="enable_by_preferences"/>
+        <boolvalue id="Auxiliary"
+                   label="Auxiliary"
+                   tooltip="Construction element"
+                   default="false"
+                   obligatory="0"/>
+      </feature>
+
+      <!--  SketchFillet  -->
+      <feature id="SketchFillet"
+               title="Fillet"
+               tooltip="Create constraint defining fillet between two objects"
+               icon="icons/Sketch/fillet.png">
+        <sketch_shape_selector id="fillet_point"
+                               label="Point"
+                               tooltip="Select point for fillet (should be shared by two entities only)"
+                               shape_types="vertex">
+          <validator id="SketchPlugin_FilletVertexValidator"/>
+        </sketch_shape_selector>
+        <!--<validator id="PartSet_FilletSelection"/>-->
+      </feature>
+      <!--  SketchConstraintSplit  -->
+      <feature id="SketchConstraintSplit" title="Split"
+               tooltip="Cut selected segment arc or circle on existing coincident points"
+               icon="icons/Sketch/split.png">
+        <sketch_sub_shape_selector
+            id="ConstraintValue"
+            label="Segment"
+            tooltip="Select segment for split"
+            shape_types="edge"
+            use_external="false"
+            use_graphic_intersection="false">
+          <validator id="SketchPlugin_SplitValidator"/>
+        </sketch_sub_shape_selector>
+        <validator id="PartSet_SplitSelection"/>
+      </feature>
+      <!--  SketchTrim  -->
+      <feature id="SketchTrim" title="Trim"
+               tooltip="Trim selected segment arc or circle on intersection points nearest to the graphic selection"
+               icon="icons/Sketch/trim.png">
+        <sketch_feature_point_selector
+            id="SelectedObject"
+            label="Segment"
+            tooltip="Select segment for trim"
+            shape_types="edge"
+            use_external="false"
+            use_graphic_intersection="true">
+          <validator id="SketchPlugin_TrimValidator"/>
+        </sketch_feature_point_selector>
+        <validator id="PartSet_SplitSelection"/>
+      </feature>
+    </group>
+
+    <group id="Elliptic geometry">
+      <!-- SketchEllipse is a hidden feature. It is created inside SketchMacroEllipse. -->
+      <feature id="SketchEllipse"
+               title="Ellipse"
+               tooltip="Create ellipse"
+               icon="icons/Sketch/ellipse.png"
+               internal="1">
+        <sketch-2dpoint_selector id="ellipse_center"
+                                 title="Center"
+                                 tooltip="Center coordinates"
+                                 accept_expressions="0"
+                                 enable_value="enable_by_preferences"/>
+        <sketch-2dpoint_selector id="ellipse_focus"
+                                 title="Focus"
+                                 tooltip="Focus coordinates"
+                                 accept_expressions="0"
+                                 enable_value="enable_by_preferences"/>
+        <labelvalue id="ellipse_major_radius"
+                    icon="icons/Sketch/radius.png"
+                    label="Major radius:"
+                    tooltip="Set major radius"
+                    default="computed"
+                    accept_expressions="0"
+                    enable_value="enable_by_preferences">
+        </labelvalue>
+        <labelvalue id="ellipse_minor_radius"
+                    icon="icons/Sketch/radius.png"
+                    label="Minor radius:"
+                    tooltip="Set minor radius"
+                    default="computed"
+                    accept_expressions="0"
+                    enable_value="enable_by_preferences">
+        </labelvalue>
         <boolvalue id="Auxiliary" label="Auxiliary" default="false" tooltip="Construction element" obligatory="0"/>
-        <validator id="GeomValidators_Different" parameters="ArcCenter,ArcStartPoint,ArcEndPoint"/>
       </feature>
-      <!--  SketchConstraintFillet  -->
-      <feature id="SketchConstraintFillet" title="Fillet" tooltip="Create constraint defining fillet between two objects" icon=":icons/fillet.png">
+      <!-- SketchMacroEllipse -->
+      <feature id="SketchMacroEllipse"
+               icon="icons/Sketch/ellipse.png"
+               title="Ellipse"
+               tooltip="Create ellipse">
+        <sketch-2dpoint_selector id="center_point"
+                                 reference_attribute="center_point_ref"
+                                 title="Center point"
+                                 tooltip="Center point coordinates"
+                                 accept_expressions="0"
+                                 enable_value="enable_by_preferences"/>
+        <sketch-2dpoint_selector id="major_axis_point"
+                                 reference_attribute="major_axis_point_ref"
+                                 title="Major axis point"
+                                 tooltip="Major axis point coordinates"
+                                 accept_expressions="0"
+                                 enable_value="enable_by_preferences"/>
+        <sketch-2dpoint_selector id="passed_point"
+                                 reference_attribute="passed_point_ref"
+                                 title="Passed point"
+                                 tooltip="Passed point coordinates"
+                                 accept_expressions="0"
+                                 enable_value="enable_by_preferences">
+<!--          <validator id="SketchPlugin_CirclePassedPointValidator"/> -->
+        </sketch-2dpoint_selector>
+<!--        <validator id="GeomValidators_Different" parameters="center_point_ref,passed_point_ref"/> -->
+        <labelvalue id="ellipse_major_radius"
+                    icon="icons/Sketch/radius.png"
+                    label="Major radius:"
+                    tooltip="Set major radius"
+                    default="computed"
+                    accept_expressions="0"
+                    obligatory="0"
+                    enable_value="enable_by_preferences">
+          <validator id="GeomValidators_Positive"/>
+        </labelvalue>
+        <labelvalue id="ellipse_minor_radius"
+                    icon="icons/Sketch/radius.png"
+                    label="Minor radius:"
+                    tooltip="Set minor radius"
+                    default="computed"
+                    accept_expressions="0"
+                    obligatory="0"
+                    enable_value="enable_by_preferences">
+          <validator id="GeomValidators_Positive"/>
+        </labelvalue>
+        <boolvalue id="Auxiliary"
+                   tooltip="Construction element"
+                   label="Auxiliary"
+                   default="false"
+                   obligatory="0"/>
+      </feature>
+    </group>
+
+    <group id="Projection">
+      <!-- Intersection Point -->
+      <!-- feature
+        id="SketchIntersectionPoint"
+        title="Intersection Point"
+        tooltip="Create intersection point"
+        icon="icons/Sketch/intersection_point.png">
+        <sketch_shape_selector
+              id="ExternalLine"
+              label="Edge"
+              tooltip="Select external line."
+              shape_types="edge"
+              use_external="false"
+              use_sketch_plane="false">
+          <validator id="GeomValidators_ShapeType" parameters="line"/>
+          <validator id="SketchPlugin_IntersectionValidator"/>
+        </sketch_shape_selector>
+      </feature -->
+
+      <!-- Projected feature -->
+      <feature
+        id="SketchProjection"
+        title="Projection"
+        tooltip="Project feature onto sketch plane"
+        icon="icons/Sketch/projection.png">
+        <sketch_shape_selector
+              id="ExternalFeature"
+              label="Edge"
+              tooltip="Select external edge."
+              shape_types="edge"
+              use_external="true"
+              can_create_external="false"
+              use_sketch_plane="false">
+          <validator id="SketchPlugin_ProjectionValidator"/>
+        </sketch_shape_selector>
+        <validator id="PartSet_ProjectionSelection"/>
+      </feature>
+    </group>
+
+    <group id="Replication">
+      <!--  SketchConstraintMirror  -->
+      <feature
+        id="SketchConstraintMirror"
+        title="Mirror" icon="icons/Sketch/mirror.png"
+        tooltip="Create constraint, mirroring group of objects">
         <sketch_shape_selector id="ConstraintEntityA"
-            label="Point" tooltip="Select point for fillet (should be shared by two entities only)" shape_types="vertex">
-          <validator id="SketchPlugin_FilletVertexValidator"/>
+            label="Mirror line" tooltip="Select mirror line" shape_types="edge">
+          <validator id="GeomValidators_ShapeType" parameters="line"/>
         </sketch_shape_selector>
-        <doublevalue label="Radius" tooltip="Fillet arc radius" id="ConstraintValue" min="0" default="1" use_reset="false">
+        <sketch_multi_selector id="ConstraintMirrorList"
+            label="Segments:"
+            tooltip="Select list of objects to be mirrored"
+            type_choice="Edges"
+            use_external="true"
+            greed ="true">
+          <validator id="SketchPlugin_MirrorAttr" />
+        </sketch_multi_selector>
+        <validator id="PartSet_MultyTranslationSelection" />
+      </feature>
+
+      <!--  SketchMultiTranslation  -->
+      <feature
+        id="SketchMultiTranslation"
+        title="Translation" icon="icons/Sketch/translate.png"
+        tooltip="Multiple translation">
+        <sketch_multi_selector id="MultiTranslationList"
+            label="Segments:"
+            tooltip="Select list of objects to be translated"
+            type_choice="Edges"
+            use_external="true"
+            greed ="true">
+          <validator id="SketchPlugin_CopyValidator" />
+        </sketch_multi_selector>
+        <toolbox id="ValueType">
+          <box id="SingleValue" title="Single value" icon="icons/Sketch/translate_32x32.png">
+            <groupbox title="Direction">
+              <sketch_shape_selector
+                    id="MultiTranslationStartPoint"
+                    label="Start point"
+                    tooltip="Start point of translation"
+                    shape_types="vertex">
+                <validator id="PartSet_DifferentObjects"/>
+                <validator id="GeomValidators_ShapeType" parameters="vertex"/>
+              </sketch_shape_selector>
+              <sketch_shape_selector
+                    id="MultiTranslationEndPoint"
+                    label="End point"
+                    tooltip="Final point of translation"
+                    shape_types="vertex">
+                <validator id="PartSet_DifferentObjects"/>
+                <validator id="GeomValidators_ShapeType" parameters="vertex"/>
+              </sketch_shape_selector>
+            </groupbox>
+          </box>
+          <box id="FullValue" title="Full value" icon="icons/Sketch/translate_full_32x32.png">
+            <groupbox title="Direction">
+              <sketch_shape_selector
+                    id="MultiTranslationStartPoint"
+                    label="Start point"
+                    tooltip="Start point of translation"
+                    shape_types="vertex">
+                <validator id="PartSet_DifferentObjects"/>
+                <validator id="GeomValidators_ShapeType" parameters="vertex"/>
+              </sketch_shape_selector>
+              <sketch_shape_selector
+                    id="MultiTranslationEndPoint"
+                    label="End point"
+                    tooltip="Final point of translation"
+                    shape_types="vertex">
+                <validator id="PartSet_DifferentObjects"/>
+                <validator id="GeomValidators_ShapeType" parameters="vertex"/>
+              </sketch_shape_selector>
+            </groupbox>
+          </box>
+        </toolbox>
+        <integervalue id="MultiTranslationObjects"
+            label="Total number of objects"
+            tooltip="Total number of objects"
+            default="2" min="2" use_reset="false">
           <validator id="GeomValidators_Positive"/>
-        </doublevalue>
+        </integervalue>
+        <validator id="PartSet_MultyTranslationSelection" />
+      </feature>
+
+      <!--  SketchMultiRotation  -->
+      <feature
+        id="SketchMultiRotation"
+        title="Rotation" icon="icons/Sketch/rotate.png"
+        tooltip="Multiple rotation">
+        <sketch_multi_selector id="MultiRotationList"
+            label="Segments:"
+            tooltip="Select list of objects to be rotated"
+            type_choice="Edges"
+            use_external="true"
+            greed ="true">
+          <validator id="SketchPlugin_CopyValidator" />
+        </sketch_multi_selector>
+        <sketch_shape_selector
+              id="MultiRotationCenter"
+              label="Center of rotation"
+              tooltip="Center of rotation"
+              shape_types="vertex">
+          <validator id="GeomValidators_ShapeType" parameters="vertex"/>
+        </sketch_shape_selector>
+        <toolbox id="AngleType">
+          <box id="SingleAngle" title="Single angle" icon="icons/Sketch/angle_up_32x32.png">
+            <doublevalue id="MultiRotationAngle"
+                         label="Angle"
+                         icon="icons/Sketch/angle.png"
+                         tooltip="Rotation angle"
+                         default="90" use_reset="false"/>
+          </box>
+          <box id="FullAngle" title="Full angle" icon="icons/Sketch/angle_up_full_32x32.png">
+            <doublevalue id="MultiRotationAngle"
+                         label="Angle"
+                         icon="icons/Sketch/angle.png"
+                         tooltip="Rotation angle"
+                         default="90" use_reset="false"/>
+          </box>
+        </toolbox>
+        <integervalue id="MultiRotationObjects"
+            label="Total number of objects"
+            tooltip="Total number of objects"
+            default="2" min="2" use_reset="false">
+          <validator id="GeomValidators_Positive"/>
+        </integervalue>
+        <validator id="PartSet_MultyTranslationSelection" />
       </feature>
     </group>
-      
-    <group id="Constraints">
+
+    <group id="Dimensional constraints">
     <!--  SketchConstraintDistance  -->
       <feature
         id="SketchConstraintDistance"
         title="Distance"
         tooltip="Set fixed distance from a point to an object"
-        icon=":icons/distance.png">
+        icon="icons/Sketch/distance.png">
         <label title="Select objects for distance definition. Following objects can be accepted: point, line or arc end point, center of circle or arc."/>
         <sketch_shape_selector
               id="ConstraintEntityA"
           <validator id="PartSet_DifferentObjects"/>
           <validator id="GeomValidators_ShapeType" parameters="vertex,line"/>
         </sketch_shape_selector>
-        <sketch_shape_selector 
-          id="ConstraintEntityB" 
-          label="Second object" 
-          tooltip="Select point, line end point, line, center of circle or arc." 
+        <sketch_shape_selector
+          id="ConstraintEntityB"
+          label="Second object"
+          tooltip="Select point, line end point, line, center of circle or arc."
           shape_types="edge vertex">
           <validator id="PartSet_DifferentObjects"/>
           <validator id="SketchPlugin_DistanceAttr" parameters="ConstraintEntityA"/>
           <validator id="GeomValidators_ShapeType" parameters="vertex,line"/>
         </sketch_shape_selector>
         <sketch-2dpoint_flyout_selector id="ConstraintFlyoutValuePnt"  default="computed" internal="1" obligatory="0"/>
-        
+
         <doublevalue_editor label="Value" tooltip="Distance" id="ConstraintValue" default="computed" min="0">
           <validator id="GeomValidators_Positive"/>
         </doublevalue_editor>
-        
+
         <validator id="PartSet_DistanceSelection"/>
       </feature>
-      
-    <!--  SketchConstraintLength  -->      
-      <feature id="SketchConstraintLength" title="Length" tooltip="Set fixed length of a line segment" icon=":icons/length.png">
+
+    <!--  SketchConstraintLength  -->
+      <feature id="SketchConstraintLength" title="Length" tooltip="Set fixed length of a line segment" icon="icons/Sketch/length.png">
         <label title="Select a line on which to calculate length" tooltip="Select a line on which to calculate length"/>
-        <shape_selector id="ConstraintEntityA" label="Line" tooltip="Select an line" shape_types="edge" >
+        <shape_selector id="ConstraintEntityA" label="Line" tooltip="Select a line" shape_types="edge" >
           <validator id="GeomValidators_ShapeType" parameters="line"/>
         </shape_selector>
         <sketch-2dpoint_flyout_selector id="ConstraintFlyoutValuePnt" default="computed" internal="1" obligatory="0"/>
         </doublevalue_editor>
         <validator id="PartSet_LengthSelection"/>
       </feature>
-      
-    <!--  SketchConstraintRadius  -->
-      <feature id="SketchConstraintRadius" title="Radius" tooltip="Set fixed radius of a circle or an arc" icon=":icons/radius_constr.png">
+
+      <!--  SketchConstraintAngle  -->
+      <feature id="SketchConstraintAngle" title="Angle" tooltip="Set fixed angle between two line segments" icon="icons/Sketch/angle_constr.png">
+        <sketch_shape_selector id="ConstraintEntityA" label="Line 1" tooltip="Select a line" shape_types="edge" >
+          <validator id="GeomValidators_ShapeType" parameters="line"/>
+          <validator id="PartSet_DifferentObjects"/>
+          <validator id="SketchPlugin_ExternalValidator" parameters="ConstraintEntityB"/>
+        </sketch_shape_selector>
+        <sketch_shape_selector id="ConstraintEntityB" label="Line 2" tooltip="Select a line" shape_types="edge" >
+          <validator id="GeomValidators_ShapeType" parameters="line"/>
+          <validator id="PartSet_DifferentObjects"/>
+          <validator id="SketchPlugin_ExternalValidator" parameters="ConstraintEntityA"/>
+        </sketch_shape_selector>
+        <sketch-2dpoint_flyout_selector id="ConstraintFlyoutValuePnt"  default="computed" internal="1" obligatory="0"/>
+        <doublevalue_editor label="Value" tooltip="Angle" id="AngleValue" default="computed" min="0" max="360" />
+        <validator id="PartSet_AngleSelection"/>
+        <module_choice id="AngleType"
+          widget_type="radiobuttons"
+          buttons_dir="horizontal"
+          label="Angle type"
+          tooltip="Type of angle"
+          string_list="Direct Complementary Additional"
+          icons_list="icons/Sketch/angle_direct.png icons/Sketch/angle_complementary.png icons/Sketch/angle_backward.png"
+          default="0"
+          />
+      </feature>
+
+      <!--  SketchConstraintRadius  -->
+      <feature id="SketchConstraintRadius" title="Radius" tooltip="Set fixed radius of a circle or an arc" icon="icons/Sketch/radius_constr.png">
         <label title="Select a circle or an arc on which to calculate radius" tooltip="Select a circle or an arc on which to calculate radius"/>
-        <shape_selector id="ConstraintEntityA" label="Circle or Arc" tooltip="Select a circle or an arc" 
+        <shape_selector id="ConstraintEntityA" label="Circle or Arc" tooltip="Select a circle or an arc"
             shape_types="edge">
-            <validator id="GeomValidators_ShapeType" parameters="circle"/>
+          <validator id="GeomValidators_ShapeType" parameters="circle"/>
         </shape_selector>
         <sketch-2dpoint_flyout_selector id="ConstraintFlyoutValuePnt"  default="computed" internal="1" obligatory="0"/>
         <doublevalue_editor label="Value" tooltip="Radius" id="ConstraintValue" default="computed">
         <validator id="PartSet_RadiusSelection"/>
       </feature>
 
-      <!--  SketchConstraintAngle  -->
-      <feature id="SketchConstraintAngle" title="Angle" tooltip="Set fixed angle between two line segments" icon=":icons/angle_constr.png">
-        <shape_selector id="ConstraintEntityA" label="Line 1" tooltip="Select an line" shape_types="edge" >
+    </group>
+
+    <group id="Geometrical constraints">
+
+      <!--  SketchConstraintHorizontal  -->
+      <feature id="SketchConstraintHorizontal" title="Horizontal" tooltip="Create constraint defining horizontal line" icon="icons/Sketch/horisontal.png">
+        <sketch_shape_selector id="ConstraintEntityA"
+            label="Line" tooltip="Select a line" shape_types="edge" use_external="false">
           <validator id="GeomValidators_ShapeType" parameters="line"/>
-          <validator id="PartSet_DifferentObjects"/>
-          <validator id="SketchPlugin_ExternalValidator" parameters="ConstraintEntityB"/>
-        </shape_selector>
-        <shape_selector id="ConstraintEntityB" label="Line 2" tooltip="Select an line" shape_types="edge" >
+          <validator id="SketchPlugin_HasNoConstraint" parameters="SketchConstraintHorizontal, SketchConstraintVertical"/>
+        </sketch_shape_selector>
+        <validator id="PartSet_HVDirSelection"/>
+      </feature>
+
+      <!--  SketchConstraintVertical  -->
+      <feature id="SketchConstraintVertical" title="Vertical" tooltip="Create constraint defining vertical line" icon="icons/Sketch/vertical.png">
+        <sketch_shape_selector id="ConstraintEntityA"
+            label="Line" tooltip="Select a line" shape_types="edge" use_external="false">
           <validator id="GeomValidators_ShapeType" parameters="line"/>
-          <validator id="PartSet_DifferentObjects"/>
-          <validator id="SketchPlugin_ExternalValidator" parameters="ConstraintEntityA"/>
-        </shape_selector>
-        <sketch-2dpoint_flyout_selector id="ConstraintFlyoutValuePnt"  default="computed" internal="1" obligatory="0"/>
-        <doublevalue_editor label="Value" tooltip="Angle" id="ConstraintValue" default="computed" min="0" max="180" />
-        <validator id="PartSet_AngleSelection"/>
+          <validator id="SketchPlugin_HasNoConstraint" parameters="SketchConstraintHorizontal, SketchConstraintVertical"/>
+        </sketch_shape_selector>
+        <validator id="PartSet_HVDirSelection"/>
+      </feature>
+
+      <!--  SketchConstraintRigid  -->
+      <feature id="SketchConstraintRigid" title="Fixed" tooltip="Fix an object" icon="icons/Sketch/fixed.png">
+        <sketch_shape_selector id="ConstraintEntityA" label="Object"
+                        tooltip="Select point, line end point, line, center of circle or arc."
+                        shape_types="edge vertex">
+          <validator id="GeomValidators_ShapeType" parameters="vertex,line,circle"/>
+          <validator id="SketchPlugin_NotFixed"/>
+        </sketch_shape_selector>
+        <validator id="PartSet_RigidSelection"/>
       </feature>
 
       <!--  SketchConstraintParallel  -->
-      <feature id="SketchConstraintParallel" title="Parallel" tooltip="Create constraint defining two parallel lines" icon=":icons/parallel.png">
-        <sketch_shape_selector id="ConstraintEntityA" 
+      <feature id="SketchConstraintParallel" title="Parallel" tooltip="Create constraint defining two parallel lines"
+               icon="icons/Sketch/parallel.png">
+        <sketch_shape_selector id="ConstraintEntityA"
             label="First line" tooltip="Select a line" shape_types="edge">
           <validator id="GeomValidators_ShapeType" parameters="line"/>
           <validator id="PartSet_DifferentObjects"/>
           <validator id="SketchPlugin_ExternalValidator" parameters="ConstraintEntityB"/>
         </sketch_shape_selector>
-        
-        <sketch_shape_selector id="ConstraintEntityB" label="Second line" tooltip="Select a line" 
+
+        <sketch_shape_selector id="ConstraintEntityB" label="Second line" tooltip="Select a line"
             shape_types="edge">
             <validator id="GeomValidators_ShapeType" parameters="line"/>
             <validator id="PartSet_DifferentObjects"/>
         </sketch_shape_selector>
         <validator id="PartSet_ParallelSelection"/>
       </feature>
-      
+
     <!--  SketchConstraintPerpendicular  -->
-      <feature id="SketchConstraintPerpendicular" title="Perpendicular" 
-        tooltip="Create constraint defining two perpendicular lines" 
-        icon=":icons/perpendicular.png">
-        <sketch_shape_selector id="ConstraintEntityA" 
-            label="First line" tooltip="Select an line" 
+      <feature id="SketchConstraintPerpendicular" title="Perpendicular"
+        tooltip="Create constraint defining two perpendicular lines"
+        icon="icons/Sketch/perpendicular.png">
+        <sketch_shape_selector id="ConstraintEntityA"
+            label="First line" tooltip="Select a line"
             shape_types="edge">
           <validator id="PartSet_DifferentObjects"/>
           <validator id="SketchPlugin_ExternalValidator" parameters="ConstraintEntityB"/>
             <validator id="GeomValidators_ShapeType" parameters="line"/>
         </sketch_shape_selector>
-        
-        <sketch_shape_selector id="ConstraintEntityB" 
-            label="Second line" tooltip="Select an line" 
+
+        <sketch_shape_selector id="ConstraintEntityB"
+            label="Second line" tooltip="Select a line"
             shape_types="edge">
             <validator id="PartSet_DifferentObjects"/>
           <validator id="SketchPlugin_ExternalValidator" parameters="ConstraintEntityA"/>
         <validator id="PartSet_PerpendicularSelection"/>
       </feature>
 
-      <!--  SketchConstraintCoincedence  -->
-      <feature id="SketchConstraintCoincidence" title="Coincident" tooltip="Create constraint for the coincidence of two points or point on line or circle" icon=":icons/coincedence.png">
+      <!--  SketchConstraintTangent  -->
+      <feature id="SketchConstraintTangent" title="Tangent" tooltip="Create constraint defining tangency of two objects with common coincident point" icon="icons/Sketch/tangent.png">
+        <sketch_shape_selector id="ConstraintEntityA"
+            label="First object" tooltip="Select line or arc" shape_types="edge">
+          <validator id="SketchPlugin_TangentAttr" parameters="ConstraintEntityB"/>
+          <validator id="PartSet_DifferentObjects"/>
+        </sketch_shape_selector>
+
+        <sketch_shape_selector id="ConstraintEntityB"
+            label="Second object" tooltip="Select line or arc" shape_types="edge">
+          <validator id="SketchPlugin_TangentAttr" parameters="ConstraintEntityA"/>
+          <validator id="PartSet_DifferentObjects"/>
+        </sketch_shape_selector>
+        <validator id="PartSet_TangentSelection"/>
+      </feature>
+
+      <!--  SketchConstraintCoincidence  -->
+      <feature id="SketchConstraintCoincidence" title="Coincident" tooltip="Create constraint for the coincidence of two points or point on line or circle" icon="icons/Sketch/coincedence.png">
         <sketch_shape_selector id="ConstraintEntityA" label="First object" tooltip="Select a first object" shape_types="vertex edge">
           <validator id="PartSet_DifferentObjects"/>
           <validator id="SketchPlugin_ExternalValidator" parameters="ConstraintEntityB"/>
         <validator id="PartSet_CoincidentSelection"/>
       </feature>
 
-      <!--  SketchConstraintRigid  -->
-      <feature id="SketchConstraintRigid" title="Fixed" tooltip="Fix an object" icon=":icons/fixed.png">
-        <sketch_shape_selector id="ConstraintEntityA" label="Object"
-                        tooltip="Select point, line end point, line, center of circle or arc."
-                        shape_types="edge vertex">
-          <validator id="GeomValidators_ShapeType" parameters="vertex,line,circle"/>
-          <validator id="SketchPlugin_NotFixed"/>
-        </sketch_shape_selector>
-        <validator id="PartSet_RigidSelection"/>
-      </feature>
-
-      <!--  SketchConstraintHorizontal  -->
-      <feature id="SketchConstraintHorizontal" title="Horizontal" tooltip="Create constraint defining horizontal line" icon=":icons/horisontal.png">
-        <sketch_shape_selector id="ConstraintEntityA" 
-            label="Line" tooltip="Select a line" shape_types="edge" use_external="false">
-            <validator id="GeomValidators_ShapeType" parameters="line"/>
+      <!--  SketchConstraintMiddle  -->
+      <feature id="SketchConstraintMiddle" title="Middle point" tooltip="Create constraint for setting middle point on a line" icon="icons/Sketch/middlepoint.png">
+        <sketch_shape_selector id="ConstraintEntityA" label="First object" tooltip="Select a first object" shape_types="vertex edge">
+          <validator id="PartSet_DifferentObjects"/>
+          <validator id="SketchPlugin_ExternalValidator" parameters="ConstraintEntityB"/>
+          <validator id="SketchPlugin_MiddlePointAttr" parameters="ConstraintEntityB"/>
         </sketch_shape_selector>
-        <validator id="PartSet_HVDirSelection"/>
-      </feature>
-      
-    <!--  SketchConstraintVertical  -->
-      <feature id="SketchConstraintVertical" title="Vertical" tooltip="Create constraint defining vertical line" icon=":icons/vertical.png">
-        <sketch_shape_selector id="ConstraintEntityA" 
-            label="Line" tooltip="Select a line" shape_types="edge" use_external="false">
-            <validator id="GeomValidators_ShapeType" parameters="line"/>
+        <sketch_shape_selector id="ConstraintEntityB" label="Second object" tooltip="Select a second object" shape_types="vertex edge">
+          <validator id="PartSet_DifferentObjects"/>
+          <validator id="SketchPlugin_ExternalValidator" parameters="ConstraintEntityA"/>
+          <validator id="SketchPlugin_MiddlePointAttr" parameters="ConstraintEntityA"/>
         </sketch_shape_selector>
-        <validator id="PartSet_HVDirSelection"/>
+        <validator id="PartSet_MiddlePointSelection"/>
       </feature>
-      
-    <!--  SketchConstraintEqual  -->
+
+      <!--  SketchConstraintEqual  -->
       <feature id="SketchConstraintEqual" title="Equal"
         tooltip="Create constraint defining equal lengths of two lines or line and arc or equal radii of two arcs or two circles or arc and circle"
-        icon=":icons/equal.png">
-        <sketch_shape_selector id="ConstraintEntityA" 
+        icon="icons/Sketch/equal.png">
+        <sketch_shape_selector id="ConstraintEntityA"
             label="First object" tooltip="Select line, circle or arc" shape_types="edge">
           <validator id="PartSet_DifferentObjects"/>
           <validator id="SketchPlugin_ExternalValidator" parameters="ConstraintEntityB"/>
         </sketch_shape_selector>
-        
+
         <sketch_shape_selector id="ConstraintEntityB"
             label="Second object" tooltip="Select line, circle or arc" shape_types="edge">
           <validator id="SketchPlugin_EqualAttr" parameters="ConstraintEntityA"/>
         </sketch_shape_selector>
         <validator id="PartSet_EqualSelection"/>
       </feature>
-      
-    <!--  SketchConstraintTangent  -->
-      <feature id="SketchConstraintTangent" title="Tangent" tooltip="Create constraint defining tangency of two objects with common coincident point" icon=":icons/tangent.png">
-        <sketch_shape_selector id="ConstraintEntityA" 
-            label="First object" tooltip="Select line or arc" shape_types="edge">
-          <validator id="PartSet_CoincidentAttr" parameters="ConstraintEntityB"/>
+
+    <!--  SketchConstraintCollinear  -->
+      <feature id="SketchConstraintCollinear" title="Collinear" tooltip="Create constraint defining collinearity of two lines" icon="icons/Sketch/collinear.png">
+        <sketch_shape_selector id="ConstraintEntityA"
+            label="First line" tooltip="Select a line" shape_types="edge">
+          <validator id="GeomValidators_ShapeType" parameters="line"/>
           <validator id="PartSet_DifferentObjects"/>
         </sketch_shape_selector>
-        
+
         <sketch_shape_selector id="ConstraintEntityB"
-            label="Second object" tooltip="Select line or arc" shape_types="edge">
-          <validator id="PartSet_CoincidentAttr" parameters="ConstraintEntityA"/>
-          <validator id="SketchPlugin_TangentAttr" parameters="ConstraintEntityA"/>
+            label="Second line" tooltip="Select a line" shape_types="edge">
+          <validator id="GeomValidators_ShapeType" parameters="line"/>
           <validator id="PartSet_DifferentObjects"/>
         </sketch_shape_selector>
-        <validator id="PartSet_TangentSelection"/>
-      </feature>
-         
-    </group>
-    
-    <group id="Edit">
-      <!--  SketchConstraintMirror  -->
-      <feature
-        id="SketchConstraintMirror"
-        title="Mirror" icon=":icons/mirror.png"
-        tooltip="Create constraint, mirroring group of objects">
-        <sketch_shape_selector id="ConstraintEntityA"
-            label="Mirror line" tooltip="Select mirror line" shape_types="edge">
-            <validator id="GeomValidators_ShapeType" parameters="line"/>
-        </sketch_shape_selector>
-        <sketch_multi_selector id="ConstraintMirrorList"
-            label="Segments:"
-            tooltip="Select list of mirroring objects"
-            type_choice="Edges"
-            use_external="true">
-            <validator id="SketchPlugin_MirrorAttr" />
-        </sketch_multi_selector>
-      </feature>
-      
-      <!--  SketchMultiTranslation  -->
-      <feature
-        id="SketchMultiTranslation"
-        title="Translation" icon=":icons/translate.png"
-        tooltip="Multiple translation">
-        <sketch_multi_selector id="MultiTranslationList"
-            label="Segments:"
-            tooltip="Select list of translating objects"
-            type_choice="Edges"
-            use_external="true">
-          <validator id="SketchPlugin_CopyValidator" />
-        </sketch_multi_selector>
-        <groupbox title="Direction">
-          <sketch-2dpoint_selector
-              id="MultiTranslationStartPoint"
-              title="Start point"
-              tooltip="Start point of translation"/>
-          <sketch-2dpoint_selector
-              id="MultiTranslationEndPoint"
-              title="End point"
-              tooltip="Final point of translation"/>
-        </groupbox>
-        <integervalue id="MultiTranslationObjects"
-            label="Total number of objects"
-            tooltip="Total number of objects" 
-            default="2" min="2" use_reset="false">
-          <validator id="GeomValidators_Positive"/>
-        </integervalue>
-      </feature>
-      
-      <!--  SketchMultiRotation  -->
-      <feature
-        id="SketchMultiRotation"
-        title="Rotation" icon=":icons/rotate.png"
-        tooltip="Multiple rotation">
-        <sketch_multi_selector id="MultiRotationList"
-            label="Segments:"
-            tooltip="Select list of rotating objects"
-            type_choice="Edges"
-            use_external="true">
-          <validator id="SketchPlugin_CopyValidator" />
-        </sketch_multi_selector>
-        <sketch-2dpoint_selector
-            id="MultiRotationCenter"
-            title="Center of rotation"
-            tooltip="Center of rotation"
-            default="0"/>
-        <point2dangle id="MultiRotationAngle"
-                         first_point="MultiRotationCenter"
-                         label="Angle"
-                         icon=":icons/angle.png"
-                         tooltip="Rotation angle"
-                         default="90"/>
-        <integervalue id="MultiRotationObjects"
-            label="Total number of objects"
-            tooltip="Total number of objects" 
-            default="2" min="2" use_reset="false">
-          <validator id="GeomValidators_Positive"/>
-        </integervalue>
+        <validator id="PartSet_CollinearSelection"/>
       </feature>
+
     </group>
+
   </workbench>
 </plugin>