거리및계획고로부터레벨구하는리습인데요
실행후위치지정시 아래쪽 지정하면 정상적으로 표시가 되는데
위쪽지정시 이상한 선이하나 나오네요
왜그런지 고수님들 한번 봐주세요
FH
FH FH
FH
;계획고 자동계산
(DEFUN DTR (A)
(* PI (/ A 180.00))
)
(DEFUN RTD (B)
(/ (* 180.00 B) PI)
)
(defun c:FH ()
(graphscr)
;(setq x_scale (getreal “nH Scale:”))
(setq x_scale 1000)
;(setq y_scale (getreal “nV Scale:”))
(setq y_scale 1000)
(setvar “osmode” 33)
;(setq layname “slope”)
;(setq colar “white”)
; (setq layname (getstring “nLayer Name:(slope)”)) (terpri)
; (if (= layname nil)
; (setq layname “slope”)
; )
; (setq colar (getstring “nColor Name:(white)”)) (terpri)
; (if (= colar nil)
; (setq colar “white”)
; )
(setq h (getreal “nBase Height <0>: “))
(setq a (getpoint “nFirst point:”))
(setq a1 (getpoint a “Next point:”))
(setq a2 a)
(setq x1 (car a))
(setq y1 (cadr a))
(setq xx1 x1)
(setq yy1 y1)
(while a1
(setvar “osmode” 0)
(setq
x2 (car a1)
y2 (cadr a1)
d1 (distance a2 a1)
d2 (/ d1 2)
an1 (angle a2 a1)
an2 (angle a1 a2)
pt (polar a2 an1 d2)
);close setq
(if (> yy1 y2)
(progn
(if (> x2 xx1)
(progn
(setq tan1 (rtd an1))
(setq pt1 (polar pt (+ an1 (dtr 90)) 1))
(setq pt2 (polar pt (+ an1 (dtr 90)) 2))
(setq ps1 (polar pt1 an2 8))
(setq ps2 (polar pt1 an1 8))
(setq ps3 (polar ps2 (+ an1 (dtr 150)) 1))
);sr
(progn
(setq tan1 (rtd an2))
(setq pt1 (polar pt (+ an1 (dtr -90)) 1))
(setq pt2 (polar pt (+ an1 (dtr -90)) 2))
(setq ps1 (polar pt1 an2 8))
(setq ps2 (polar pt1 an1 8))
(setq ps3 (polar ps2 (- an1 (dtr 150)) 1))
);sl
);close if
);close progn ha
(progn
(if (> x2 xx1)
(progn
(setq tan1 (rtd an1))
(setq pt1 (polar pt (+ an1 (dtr 90)) 1))
(setq pt2 (polar pt (+ an1 (dtr 90)) 2))
(setq ps1 (polar pt1 an1 8))
(setq ps2 (polar pt1 an2 8))
(setq ps3 (polar ps2 (- an2 (dtr 150)) 1))
);sr
(progn
(setq tan1 (rtd an2))
(setq pt1 (polar pt (+ an1 (dtr -90)) 1))
(setq pt2 (polar pt (+ an1 (dtr -90)) 2))
(setq ps1 (polar pt1 an1 8))
(setq ps2 (polar pt1 an2 8))
(setq ps3 (polar ps2 (+ an2 (dtr 150)) 1))
);sl
);close if
);close progn san
);close if
(setq ud (getstring “nUp– , Down–
(if (or (= ud “U”) (= ud “u”))
(progn
(setq pf2 (polar a1 (dtr 60) 4))
(command “insert” “arr1” a1 “”””””)
));progn+if
(if (or (= ud “D”) (= ud “d”))
(progn
(setq pf2 (polar a1 (dtr -60) 4))
(command “insert” “arr2” a1 “”””””)
));progn+if
(setq
pf3 (polar pf2 0 3)
tp2 (polar pf2 (dtr 30) 0.4)
tp3 (polar pf2 (dtr -30) 0.4)
d_x (/ (* (abs (- x1 x2)) x_scale) 1000)
d_y (/ (* (abs (- y1 y2)) y_scale) 1000)
d_l (/ (* (distance a a1) x_scale) 1000)
d_x1 (/ (* (abs (- xx1 x2)) x_scale) 1000)
d_y1 (/ (* (abs (- yy1 y2)) y_scale) 1000)
s (/ d_y1 d_x1)
;; s (/ d_y d_l)
fh (- h (/ (* (- y1 y2) y_scale) 1000))
);setq close
(COMMAND “LAYER” “m” layname “c” colar “” “”)
; (command “pline” ps1 ps2 ps3 “”) ;구배를 표시
(command “line” a1 pf2 pf3 “”)
; (setq tx1 (strcat “S=” (rtos (* s 100) 2 3) “%”))
; (command “text” “bc” pt2 “1.0” tan1 tx1)
(setq tx2 (strcat “FH=” (rtos fh 2 2)))
(command “text” tp2 “0.3” “0” tx2)
; (command “text” tp2 “0” tx2)
(setq tx3 (strcat “L=” (rtos d_x 2 3)))
(command “text” “tl” tp3 “0.3” “0” tx3)
; (command “text” “tl” tp3 “0” tx3)
(setq a2 a1)
(setq xx1 x2 yy1 y2)
(setvar “osmode” 33)
(setq a1 (getpoint a2 “nNext point:”))
);while close
);defun close