오토캐드(AutoCAD) H빔(H형강) 리습

1. H빔(H형강) 리습

AutoCAD에서 H빔(H형강)을 그리기 위해 규격에 따른 상세치수가 필요합니다. 자주 사용하는 H빔은 블록으로 변환해서 사용하기도 하는데요. 도면에 블록이 많아지면 용량이 커져 속도가 느려집니다. 오늘은 블록으로 저장할 필요 없이 H빔(H-BEAM)을 자동으로 그려주는 리습을 살펴보겠습니다.

1) H빔(H형강) 규격

우선 H빔을 자동으로 그리기 위해서 사이즈 및 규격을 확인해야 합니다. 아래 그림과 같이 다양한 종류의 H빔이 있는데요. 가장 많이 사용하는 35개의 H빔 정보 표시하고 있습니다. H빔을 그리기 위해 B, H, t1, t2, r에 대한 치수 정보가 필요한데요. 이 치수 정보는 H빔을 그리는 좌표를 추출하는데 사용됩니다.

H빔(H형강)-규격

2) H빔 그리는 리습 구성

위에서 살펴본 H빔 규격은 35개입니다. 리습에 35개의 H빔 정보를 입력하여 원하는 규격의 H빔을 작성하도록 데이터 시트를 구성했습니다. 또한 데이터 시트에 작성되지 않는 규격의 H빔을 작성할 수 있도록 B, H, t1, t2, r에 대한 정보를 입력할 수 있는 리습도 같이 구현하였습니다.


(1) 디그리(degree) 라디안(radian) 변환하기

AutoCAD의 리습에서 선을 그리기 위한 각도는 라디안(radian)을 사용합니다. 아래 구문은 입력한 디그리(degree) 각도를 라디안으로 변환하는 Sub 함수입니다. 자세한 사용방법은 아래 좌표 추출 구문에서 살펴보겠습니다.

(defun dtor (d)
(* pi (/ d 180.00))
)




(2) H빔 규격 데이터 시트

▼ 사용자가 데이터를 보고 선택할 수 있도록 H빔의 규격을 작성하였습니다. 이때 testscr 함수는 문자 윈도우를 실행하여 데이터 시트를 모두 확인할 수 있습니다.

(textscr) ;문자 윈도우 실행
(princ "\n [ H-BEAM ] ")
(princ "\n 1. 100*100 2. 125*125 3. 150*75 4. 148*100 5. 150*150 6. 198*99 7. 200*100 " )
(princ "\n 8. 194*150 9. 200*200 10. 200*204 11. 208*202 12. 248*124 13. 250*125 14. 244*175 " )
(princ "\n 15. 244*252 16. 298*149 17. 300*150 18. 294*200 19. 298*201 20. 294*302 21. 298*299 " )
(princ "\n 22. 300*300 23. 300*305 24. 304*301 25. 310*305 26. 310*310 27. 346*174 28. 350*175 " )
(princ "\n 29. 336*249 30. 340*250 31. 338*351 32. 344*348 33. 344*354 34. 350*350 35. 350*357 " )




▼ 아래 코드는 실제로 리습을 구동하기 위해 작성된 H빔 데이터입니다. 위에서 작성한 데이터 시트와 연결된 데이터로 사용자가 선택한 번호의 H빔을 그리는 데 사용됩니다. 이때 cond 함수는 사용자 입력 조건에 만족하는 데이터를 선택합니다. nth 함수를 통해 리스트로 작성된 B, H, t1, t2, r 데이터를 추출하여 변수로 저장합니다.

(initget 7) ; get으로 시작하는 함수를 설정합니다. 무응답 NULL을 허용하지 않음 + "0"입력을 허용하지 않음 + 음수값을 허용하지 않음을 합한 값이 7입니다.
(setq hbtype (getint "\nH-BEAM 번호 선택 : " ))  
(cond
((= hbtype 1) (setq info '( 100 100 6 8 10 )))
((= hbtype 2) (setq info '( 125 125 6.5 9 10 )))
((= hbtype 3) (setq info '( 150 75 5 7 8 )))
((= hbtype 4) (setq info '( 148 100 6 9 11 )))
((= hbtype 5) (setq info '( 150 150 7 10 11 )))
((= hbtype 6) (setq info '( 198 99 4.5 7 11 )))
((= hbtype 7) (setq info '( 200 100 5.5 8 11 )))
((= hbtype 8) (setq info '( 194 150 6 9 13 )))
((= hbtype 9) (setq info '( 200 200 8 12 13 )))
((= hbtype 10) (setq info '( 200 204 12 12 13 )))
((= hbtype 11) (setq info '( 208 202 10 16 13 )))
((= hbtype 12) (setq info '( 248 124 5 8 12 )))
((= hbtype 13) (setq info '( 250 125 6 9 12 )))
((= hbtype 14) (setq info '( 244 175 7 11 16 )))
((= hbtype 15) (setq info '( 244 252 11 11 16 )))
((= hbtype 16) (setq info '( 298 149 5.5 8 13 )))
((= hbtype 17) (setq info '( 300 150 6.5 9 13 )))
((= hbtype 18) (setq info '( 294 200 8 12 18 )))
((= hbtype 19) (setq info '( 298 201 9 14 18 )))
((= hbtype 20) (setq info '( 294 302 12 12 18 )))
((= hbtype 21) (setq info '( 298 299 9 14 18 )))
((= hbtype 22) (setq info '( 300 300 10 15 18 )))
((= hbtype 23) (setq info '( 300 305 15 15 18 )))
((= hbtype 24) (setq info '( 304 301 11 17 18 )))
((= hbtype 25) (setq info '( 310 305 15 20 18 )))
((= hbtype 26) (setq info '( 310 310 20 20 18 )))
((= hbtype 27) (setq info '( 346 174 6 9 14 )))
((= hbtype 28) (setq info '( 350 175 7 11 14 )))
((= hbtype 29) (setq info '( 336 249 8 12 20 )))
((= hbtype 30) (setq info '( 340 250 9 14 20 )))
((= hbtype 31) (setq info '( 338 351 13 13 20 )))
((= hbtype 32) (setq info '( 344 348 10 16 20 )))
((= hbtype 33) (setq info '( 344 354 16 16 20 )))
((= hbtype 34) (setq info '( 350 350 12 19 20 )))
((= hbtype 35) (setq info '( 350 357 19 19 20 )))
)
(setq h (nth 0 info))
(setq b (nth 1 info))
(setq t1 (nth 2 info))
(setq t2 (nth 3 info))
(setq r (nth 4 info))





(3) H빔(H형강) 좌표 추출하기

위에서 선택된 B, H, t1, t2, r의 정보를 통해 간단한 계산식을 거쳐 좌표를 추출하는 구문입니다. 여기서 극좌표(상대좌표)를 사용하기 위한 함수 “Polar”가 사용되었습니다. Polar 함수는 점, 각도, 길이를 입력하면 점에서 지정된 각도와 길이에 맞는 상대좌표를 반환합니다.
위에서 언급한 Sub 함수는 함수명과 디그리(degree) 각도를 입력하면 라디안으로 변환되어 Polar 함수에 사용됩니다. 자세한 설명은 아래 코드의 주석을 확인하세요.

;;<극좌표 생성 ↓>
(graphscr) ;화면을 그래픽 화면으로 전환
(initget 1) ;get으로 시작하는 함수의 무응답(NULL)을 허용하지 않음
(setq pt (getpoint "\n Pick Start point : " )) ; 시작점을 입력받음
(setq p1 (polar pt 0.0 b) ; pt에서 각도 0도, 길이b인 좌표 생성
      p2 (polar p1 (dtor 90.0) t2) ; p1에서 각도 90도, 길이 t2인 좌표 생성
      p3 (polar p2 (dtor 180.0) (/ (- b t1) 2.0)) ;p2에서 각도 180도, 길이 (b-t1)/2인 좌표 생성
      p4 (polar p3 (dtor 90.0) (- h (+ t2 t2)))  ;p3에서 각도 90도, 길이 h-(t2+t2)인 좌표 생성
      p5 (polar p4 0.0 (/ (- b t1) 2.0)) ; p4에서 각도 0도, 길이 (b-t1)/2인 좌표 생성
      p6 (polar p5 (dtor 90.0) t2) ;p5에서 각도 90도, 길이 t2인 좌표 생성
      p7 (polar p6 (dtor 180.0) b) ; p6에서 각도 180도, 길이b인 좌표 생성
      p8 (polar p7 (dtor 270.0) t2) ;p7에서 각도 270도, 길이 t2인 좌표 생성
      p9 (polar p8 0.0 (/ (- b t1) 2.0)) ;p8에서 각도 0도, 길이 (b-t1)/2인 좌표 생성
     p10 (polar p9 (dtor 270.0) (- h (+ t2 t2))) ;p9에서 각도 270도, 길이 h-(t2+t2)인 좌표 생성
     p11 (polar p10 (dtor 180.0) (/ (- b t1) 2.0))) ; p10에서 각도 0도, 길이 (b-t1)/2인 좌표 생성





(4) H빔(H형강) 그리기

추출한 좌표를 통해 H빔을 그리는 Command 구문입니다. line을 통해 추출한 점을 이용하여 H빔을 완성합니다. 완성된 H빔은 폴리선으로 변경됩니다.

;;<그리기 ↓>     
(command "line" pt p1 "")  
(command "line" p1 p2 "") 
(command "line" p2 p3 "")   (setq fil1 (entlast))
(command "line" p3 p4 "")   (setq fil2 (entlast))
(command "line" p4 p5 "")   (setq fil3 (entlast)) 
(command "line" p5 p6 "") 
(command "line" p6 p7 "") 
(command "line" p7 p8 "") 
(command "line" p8 p9 "")   (setq fil4 (entlast)) 
(command "line" p9 p10 "")  (setq fil5 (entlast))
(command "line" p10 p11 "") (setq fil6 (entlast))
(command "line" p11 pt "")  
(command "fillet" "r" r)
(command "fillet" fil1 fil2)  
(command "fillet" fil2 fil3)  
(command "fillet" fil4 fil5)         
(command "fillet" fil5 fil6)  
(command "pedit" pt "" "j" "c" p7 p1 "" "")





(5) 리습(Lisp) 구동

아래 영상은 H빔을 작성하는 리습을 실행한 영상입니다. 아래 제공된 리습은 “HBM”을 입력하고 H빔 규격 앞에 있는 번호를 입력하면 H빔이 완성됩니다.

2. H빔(H형강) 그리기 리습 – 사용자 입력값

위에서 작성한 H빔을 그리는 리습은 이미 지정된 규격의 H빔을 그리는 리습입니다. 하지만 모든 규격을 다 넣을 수 없는 단점이 있습니다. 그래서 다른 규격의 H빔을 그릴 수 있도록 B, H, t1, t2, r 데이터를 입력받아 실행하는 리습을 작성하였습니다. 위에서 다운로드 받은 리습에 포함되어 있으며, 실행 명령은 “MHBM”입니다. 사용방법은 아래 영상을 참고하시기 바랍니다.

Leave a Comment