Move at arbitrary angle

I often use arbitrary angles (i.e. not multiples of 5; the smallest possible angle snap in BricsCAD) and I have trouble moving objects perpendicular to an angled line. Is is possible to use something like "move(origin, distance, angle);"? E.g. if I have a 90 deg line, and rotate it 3 deg to the right, the angle is now 87 deg. I now duplicate this line, and want to move it 5 mm perpendicular to the first line, NOT just 5 mm to the right (i.e. 90 deg) (distance between endpoints would be correct, but inbetween less than 5 mm), but PERPENDICULAR to the angled line, 5 mm at 87 deg (to the right and slightly down if viewed from the upper endpoint).

Comments

  • Hi Kenneth,

     

    I use the "offset" command to create a construction line which will be parallel to the original, especially if at oddball angles, then delete when done. That way I don't even have to know what the angle is.

  • If you know the angle you can use:
    first point: click anywhere; second point:  @5<-3.
    Or:
    first point: 0,0; second point:  5<-3.

    Of course the creating-a-duplicate and move actions can be combined by using the copy command...

  • Thank you! Very nice :) As they say, "only a fool would ever say s/he knows a program" as even a simple program may have so many functions, tools, and methods to use them and combine them, that you will never be able to know every single possible use.

  • There was a time when Acad did not have Offset (or lisp I think) and Roy's answer was about the only way.

    Distance or List commands were the only way, or at least the way I used, to know the angle.

     If it's any help, I use the lisp attached a lot with drawings with many angles not horizontal or vertical.

    It tells you the angle and asks if you want to rotate the axes to it.

    I use a series of others to return the axes to 0 or other common ones such as 45, 30 etc if anyone is interested.

    PASTE CODE HERE

    (Defun C:angl (/ a p1 p2 ang)
    (setvar "orthomode" 0)
    (setq a (entsel "\nPick Line: "))
    (if a (setq p1 (cdr (assoc 10 (entget (car a))))))
    (if a (setq p2 (cdr (assoc 11 (entget (car a))))))
    (if (not a)(setq p1 (getpoint "\nPick Point: ")))
    (if (not a)(setq p2 (getpoint p1 "\nPick other Point: ")))
    (setq ang (angle p1 p2))
    (if (not (= 0 (- ang ang)))(setq ang (/ ang -1)))
    (if (> ang 270)(setq ang (- ang 360))
    (if (> ang 180)(setq ang (- ang 180))
    (if (> ang 90)(setq ang (- ang 180)))))
    (prin1 (/ (* ANG 180) pi))(prin1)
    (if (= "" (getstring "\nRotate AXES ? <> "))
    (SETVAR "SNAPANG" ang))(setvar "orthomode" 1)
    (setvar "TEXTANGLE" ANG)
    )

This discussion has been closed.