2011년 10월 18일 화요일

BOLT 그리기


(defun insert_bolt(bolts len bolt_d bolt_h bs / p1 p2 p3 pon1 pon2 pon3
  pon4 pon5 pon6 pon7 pon8 pon9 pon10 pon11 pon12 pon13 oldos)
  (setq oldos(getvar "osmode"))
  (setvar "osmode" 33)

  (setq p1(getpoint"\n\"첫번째점 지정\""));insert point
  (setq p2(getpoint"\n\"두번째점 지정\""));방향과 각도를 얻는다.

  (setvar "osmode" 0);그리기위해서 오스넵을 꺼둔다.

  (setq p3(angle p1 p2))

  (setq pon1(polar p1 (+ p3 (/ pi 2)) (/ bolts 2)))
  (setq pon2(polar pon1 p3 bs))
  (setq pon3(polar pon2 p3 len))
  (setq pon4(polar pon3 (- p3 (/ pi 2)) bolts))
  (setq pon5(polar pon4 (+ p3 pi) len))
  (setq pon6(polar pon5 (+ p3 pi) bs))
  (setq pon7(polar p1 p3 (+ bs len)))
  (setq pon8(polar pon7 (+ p3 (/ pi 2))(/ bolt_d 2)))
  (setq pon9(polar pon8 p3 bolt_h))
  (setq pon10(polar pon9 (- p3 (/ pi 2)) bolt_d))
  (setq pon11(polar pon10 (+ p3 pi) bolt_h))
  (setq pon12(polar pon7 p3 (+ bolt_h bolt_h)))
  (setq pon13(polar p1 (+ p3 pi) bolt_h))

  (command "color" "3" "" );볼트는 녹색
  (command "pline" pon1 pon2 pon5 pon6 pon1 "")
  (command "pline" pon2 pon3 pon4 pon5 pon2 "")
  (command "pline" pon8 pon9 pon10 pon11 pon8 "")

  (command "color" "1" "");중심선은 빨강색
  (command "line" pon13 pon12 "");center line

  (setvar "osmode" oldos)
  (command "color" "bylayer" "")

  );end



(defun c:ib();insert bolt(t.s bolt 규격참조)
  (initget 1 "16 20 22 24")
  (setq bolt_size (getkword"\n\"bolt size를 선택해주세요.(16 20 22 24)\""))
  (setq len(getint"\n\"길이를 입력해주세요.\""))
  (cond
    ((= bolt_size "16")(insert_bolt 16.0 len 27.0 10.0 15.0));볼트사이즈,길이,d(머리지름),h(머리두께),s(덜어져 나갈부분)
    ((= bolt_size "20")(insert_bolt 20.0 len 34.0 13.0 18.0))
    ((= bolt_size "22")(insert_bolt 22.0 len 39.0 14.0 19.0))
    ((= bolt_size "24")(insert_bolt 24.0 len 43.0 15.0 20.0))
    )
    (princ)
  )


규격화된 볼트를 그린다.
딴건 없고 서브 함수에 매게변수를 건네주는 것을 본격적으로 활용한것에 의의
상수와 변수 모두 잘 건네주었다.
지역변수 지정도 정상작동 돼었다.

댓글 없음 :

댓글 쓰기