AutoCAD
rotate 할때 각도가 아닌 %로 회전하기
skyground21
2020. 11. 5. 08:57
반응형
rotate 할때 각도가 아닌 %로 회전하기
rotate명령은 기준점을 중심으로 객체를 회전합니다.
선택한 객체를 기준점을 중심으로 절대 각도로 회전할 수 있습니다.
다음과 같은 프롬프트가 표시됩니다.
객체 선택객체 선택 방법을 사용하고, 작업을 마치면 Enter 키를 누릅니다.기준점 지정점을 지정합니다.회전 각도 지정각도를 입력하거나, 점을 지정하거나, c 또는 r을 입력합니다.
- 회전 각도. 객체가 기준점을 중심으로 어느 정도 거리를 두고 회전하는지 결정합니다. 회전축은 지정한 기준점을 통과하면서 현재 UCS의 Z 축에 평행합니다.
- 복사. 회전하기 위해 선택된 객체의 사본을 작성합니다.
- 참조. 지정된 각도부터 새 절대 각도까지 객체를 회전합니다. 뷰포트 객체를 회전하면 뷰포트의 경계는 도면 영역의 모서리에 평행하게 유지됩니다.
그런데 최근 작업할때
기울기가 2% 선을 그리고 싶은데 수평선을 그리고 2%회전 시키고 싶었습니다.
그래서 lisp로 작성해봤어요.
객체 선택:
base point: 선택
Rotate Slop(%) <0.0000%> 기울기 %로 입력
(defun c:RS ( / osm ss bp ang sl tmp)
(defun dtr (a) (* pi (/ a 180.0)))
(defun rtd (a) (* 180.0 (/ a pi))) ;(defun rtd (a) (/ (* a 180.0) pi))
(defun tan (a) (/ (sin a) (cos a)))
; (command "undo" "group")
(setvar "cmdecho" 0)
(setq osm (getvar "osmode"))
(prompt "\nRotate slop(%)")
(setq ss (ssget)
bp (getpoint "\nbase point: ")
tmp 0.0
)
(setq sl (getreal (strcat "\nRotate Slop(%) <" (rtos tmp) "%>")))
(setq ang (atan (/ sl 100.0)))
(setq ang (rtd ang))
(setq ang (if ang ang tmp))
(if (/= 0 ang)
(progn
(setvar "osmode" 0)
(command "rotate" ss "" bp ang)
; (setq tmp ang)
(setvar "osmode" osm)
)
)
(command "redraw")
(setvar "cmdecho" 1)
; (command "undo" "end")
(princ)
)
반응형