User:Jcreer/New Arc Functions in SMS 13.2

From XMS Wiki
< User:Jcreer
Revision as of 21:43, 12 October 2021 by Jcreer (talk | contribs)
Jump to navigationJump to search

There have been repeated requests from users at training courses of SMS to add a few CAD like operations to SMS. The comments have been strong enough to imply that if we add these few operations the users will not need to use CAD at all (but I don’t believe that).

The operations are:

Specify Arc Length

Create a new node/vertex a specified distance down the length of an arc

  1. User selects an arc, right-click and selects “Specify arc length”
  2. Dialog appears asking: Desired arc length (ft or m based on projection)
  3. If specified length is less than arc length: a new node is added to the arc at the specified distance along the arc.
  4. If the distance specified is greater than the length of the arc the end node of the arc is extended to make the arc length the specified distance.

Notes:

  • This can change the shape of any arc attached to the end of the selected arc.
  • This tool only operates on the arc in the defined arc direction.

Trim/Extend an arc to another arc.

  1. User selects two arcs, right-click and selects “Trim/extend arc to arc”. This command appears if two and only two arcs are selected
  2. Dialog appears asking:
    1. Arc to be trimmed/extended: (combo box of the two arc IDs)
    2. Arc to trim/extend to: (combo box of the two arc IDs)
    3. The first arc in the selection list would be assigned the first role and the second arc would be assigned the second role. If the user changes one role, the other changes automatically (like the source/target redistribution).
  3. The tool would determine the number of intersections between the two arcs:
    • intersections indicates that this is an “Extend” operation.
    • Find the end point of arc 1 that is closest to arc 2. This is the point that will be moved
    • Extend the ending segment of the arc including the point to be moved to see if it intersects the trimming arc (arc 2)
      • If yes: Move the point that is being moved to the intersection.
      • If no: See if the last segment extended intersects either of the rays extending from the end of the trimming arc
        • If intersects both: Move the point that is being moved to the nearest intersection
        • If intersects one: Move the point that is being moved to the intersection
        • If intersects none: Error: can’t extend the arc
    1. 1 or more intersections indicate a “Trim” operation
      1. Insert a node into the first arc at the first intersection
      2. Delete the first portion of the newly split arc

Create Horizontal or Vertical Segment

Create horizontal or vertical segments when digitizing an arc.

    1. While digitizing an arc user can hold down a key (h or v). If “h” is held down, the next point on the arc will be at the same Y value as the previous point. If the “v” is held down the next point on the arc will be at the same X value. (This could work like when we are creating the second direction of a grid frame.)

Offset an arc graphically

  1. User selects an arc and holds down the mouse button (dragging). The button down (world location is saved) (Note: we may want to have a “lock arcs” option that works similar to the lock nodes feature does now to prevent accidental dragging. We wouldn’t do this right now.)
  2. On button up, the button up world location is saved.
  3. The translation vector is computed as ButtonUpLoc - ButtonDownLoc.
  4. All nodes/vertices of the selected arc are translated by the translation vector.
Note: this also impacts the arcs attached to the end points of the arc being dragged.