티스토리 뷰

반응형

아는 지인의 요청으로 리습을 간단하게 만들어 보려고 합니다. 아래와 같은 철판에서 강제로 오프셋을 주고 띄운뒤 100mm 선을 그려주는 리습?을 하고 싶어하는 분이 있어서, 고민끝에 제가 할 수 있는 범위내에서 만들어보도록 했습니다.

리습기본 명령어와 여러가지 변수를 활용해서 만들기 시작했죠.

오랫만에 리습을 건드는 것이라 명령어를 많이 잊어버렸네요. ㅠ.ㅠ

수평 모서리 한 점을 누르면 노란색 선이 100 그려지는 함수 그냥 'DDD'라고 만들었네요.

(defun c:ddd  (/ ent pt pointx pointy upgap endx newstart newend)
; 수평 horizontality  
(setq pt  (getpoint "\nSelect Edge Point : "))
(setq pt2  (getpoint "\n Direction Point : "))
(setq os (getvar 'osmode))  
(setvar 'osmode 0)  
        (princ "\n")
(setq pointx1 (car pt))
(setq pointy1 (cadr pt))
(setq pointx2 (car pt2))
(setq pointy2 (cadr pt2))  
(princ pointx1)
(princ pointy1)  
          (princ "\n")
(princ pointx2)
(princ pointy2)  
	          (princ "\n")
	(if (> pointx1 pointx2) (setq endx (- pointx1 100)) )
	(if (< pointx1 pointx2) (setq endx (+ pointx1 100)) )

	(if (> pointy1 pointy2) (setq upgap (- pointy1 20)) )  
	(if (< pointy1 pointy2) (setq upgap (+ pointy1 20)) )  

	(setq newstart (list pointx1 upgap ))  
	(setq newend (list endx upgap))
  
(princ newstart)
          (princ "\n")
(princ newend)
          (princ "\n")  
(command "line" newstart newend "")  

  (setvar 'osmode os)   
)

실제 실행하면 되는 코드입니다.

새로는 다시 EEE라고 만들어봤어요. 약간 로직을 수정하니 되네요.

 

(defun c:eee  (/ ent pt pointx pointy upgap endx newstart newend)
; 수평 horizontality  
(setq pt  (getpoint "\nSelect Edge Point : "))
(setq pt2  (getpoint "\n Direction Point : "))
(setq os (getvar 'osmode))  
(setvar 'osmode 0)  
        (princ "\n")
(setq pointx1 (car pt))
(setq pointy1 (cadr pt))
(setq pointx2 (car pt2))
(setq pointy2 (cadr pt2))  
(princ pointx1)
(princ pointy1)  
          (princ "\n")
(princ pointx2)
(princ pointy2)  
	          (princ "\n")
	(if (> pointy1 pointy2) (setq endy (- pointy1 100)) )
	(if (< pointy1 pointy2) (setq endy (+ pointy1 100)) )

	(if (> pointx1 pointx2) (setq upgap (- pointx1 20)) )  
	(if (< pointx1 pointx2) (setq upgap (+ pointx1 20)) )  

	(setq newstart (list upgap pointy1 ))  
	(setq newend (list upgap endy))
  
(princ newstart)
          (princ "\n")
(princ newend)
          (princ "\n")  
(command "line" newstart newend "")

(setvar 'osmode os)   
)

캐드관련 일을 하는 분들은 어떻게든 반복되는 일을 줄여보려고 노력합니다.

autolisp 그리고 DCL 그리고 visualLisp  그리고 더 해서 autohot키를 이용해서 많은 좋은 작품들이 가능하다고 생각합니다.

오늘은 조기퇴근해서 가족들과 행복한 하루 되시길....

반응형
댓글