고수님들 제발 수정해주세요…ㅠㅠㅠㅠㅠㅠㅠ
여기서 구한 리습인데 실행후 osnap이 선택한대로 되질않고..
바뀝니다. 너무 번거롭습니다.
참고로 center, midpoint, endpoint, intersection, perpendicular 을
선택하여 사용합니다.
;******************양쪽으로 오프셋*********************
(defun c:dff()
(defun dtr (a)
(* pi (/ a 180.0))
)
(defun rtd (a)
(/ (* a 180.0) pi)
)
(setvar “osmode” 0)
(setvar “cmdecho” 1)
(IF (= KIS NIL) (SETQ KIS “”)
(PRINC KIS)
)
(setq off100 (getREAL “nSelect line of Distance
(IF (= off100 NIL)(SETQ off100 KIS))
(prompt “nSelect Entities to be offset “)
(setq off1 (* off100 0.5))
(SETQ a1 (SSGET))
(SETQ NUM (SSLENGTH a1))
(SETQ INDEX 0)
(REPEAT NUM
(SETQ b1 (entget (ssname a1 index)))
;; (setq b1 (entget (car (entsel))))
(setq kkke (cdr (assoc 0 b1)))
(IF (= “LINE” kkke)
(progn
(setvar “osmode” 0)
(setq c1 (assoc 10 b1))
(setq c2 (assoc 11 b1))
(setq d1 (cdr c1))
(setq d2 (cdr c2))
(setq ANG (ANGle d1 d2))
(setq p1 (polar d1 (+ ANG (dtr 90)) off1))
(setq p2 (polar d1 (- ANG (dtr 90)) off1))
(setq p3 (polar d2 (+ ANG (dtr 90)) off1))
(setq p4 (polar d2 (- ANG (dtr 90)) off1))
(command “line” p1 p3 “”)
(command “line” p2 p4 “”)
(setq index (+ index 1))
(SETQ KIS off100)
(setvar “osmode” 33)
) ;;progn
) ;;if
(if (= “ARC” kkke)
(progn
(setvar “osmode” 0)
(setq cc1 (assoc 10 b1))
(setq rr1 (assoc 40 b1))
(setq c1 (assoc 50 b1))
(setq c2 (assoc 51 b1))
(setq dd1 (cdr cc1))
(setq r1 (cdr rr1))
(setq d1 (cdr c1))
(setq ANG1 (rtd d1))
(setq d2 (cdr c2))
(setq ANG2 (rtd d2))
(setq ptt1 (+ r1 off1))
(setq ptt2 (- r1 off1))
(setq kkkk1 (strcat “@” (rtos ptt1) “<" (rtos ANG1)))
(setq kkkk2 (strcat “@” (rtos ptt1) “<" (rtos ANG2)))
(setq kkkk3 (strcat “@” (rtos ptt2) “<" (rtos ANG1)))
(setq kkkk4 (strcat “@” (rtos ptt2) “<" (rtos ANG2)))
(command “arc” “c” dd1 kkkk1 kkkk2)
(command “arc” “c” dd1 kkkk3 kkkk4)
(command “osnap” “int”)
(setq index (+ index 1))
(SETQ KIS off100)
(setvar “osmode” 33)
)
)
)
)