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.
0 -
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...
0 -
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.
0 -
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)
)0