ÀúÀÛ : ¾ÆÅ°¸ð¾Æ ÁÖ¿Õ
;;*************************************************************************
;;* BOLT/NUT/TAP                                                          *
;;* 2007/7/11                                                                   *
;;*************************************************************************
(defun bot_er (s)
(if (/= s "Function Cancelled")
(if (= s "quit / exit abort")
 (princ)
 (princ (strcat "nERROR :" s))
)
)
(setvar "cmdecho" ocmde)                              
(setvar "osmode" oosmo)
(graphscr)
(setq *error* olderr)
(princ)
)
;--------------------
(defun dtr (dtr1)
(* pi (/ dtr1 180.00))
)
(defun tplist ()
(cond
((= an2 2)  (setq size '( 2 4 3.8 0.4)))
((= an2 2.2)(setq size '( 2.2 4.5 4.3 0.45)))
((= an2 2.3)(setq size '( 2.3 4.5 4.3 0.4)))
((= an2 2.5)(setq size '( 2.5 5 4.7 0.45)))
((= an2 2.6)(setq size '( 2.6 5 4.7 0.45)))
((= an2 3)  (setq size '( 3 5.5 5.3 0.6)))
((= an2 3.5)(setq size '( 3 6 5.8 0.6)))
((= an2 4)  (setq size '( 4 7 6.8 0.75)))
((= an2 4.5)(setq size '( 4.5 8 7.8 0.75)))
((= an2 5)  (setq size '( 5 8 7.8 0.9)))
((= an2 6)  (setq size '( 6 10 9.8 1)))
((= an2 7)  (setq size '( 7 11 10.8 1)))
((= an2 8)  (setq size '( 8 13 12.5 1.25)))
((= an2 10) (setq size '( 10 17 16.5 1.5)))
((= an2 12) (setq size '( 12 19 18 1.75)))
((= an2 14) (setq size '( 14 22 21 2)))
((= an2 16) (setq size '( 16 24 23 2)))
((= an2 18) (setq size '( 18 27 26 2.5)))
((= an2 20) (setq size '( 20 30 29 2.5)))
((= an2 22) (setq size '( 22 32 31 2.5)))
((= an2 24) (setq size '( 24 36 34 3)))
((= an2 27) (setq size '( 27 41 39 3)))
((= an2 30) (setq size '( 30 46 44 3.5)))
((= an2 33) (setq size '( 33 50 48 3.5)))
((= an2 36) (setq size '( 36 55 53 4)))
((= an2 39) (setq size '( 39 60 57 0)))
((= an2 42) (setq size '( 42 65 62 4.5)))
((= an2 45) (setq size '( 45 70 67 0)))
((= an2 48) (setq size '( 48 75 72 5)))
((= an2 52) (setq size '( 52 80 77 0)))
((= an2 56) (setq size '( 56 85 82 0)))
((= an2 60) (setq size '( 60 90 87 0)))
((= an2 64) (setq size '( 64 95 92 0)))
((= an2 68) (setq size '( 68 100 97 0)))
((= an2 72) (setq size '( 72 105 102 0)))
((= an2 76) (setq size '( 76 110 107 0)))
((= an2 80) (setq size '( 80 115 112 0)))
((= an2 85) (setq size '( 85 120 116 0)))
((= an2 90) (setq size '( 90 130 126 0)))
((= an2 95) (setq size '( 95 135 131 0)))
((= an2 100) (setq size '( 100 145 141 0)))
((= an2 105) (setq size '( 105 150 146 0)))
((= an2 110) (setq size '( 110 155 151 0)))
((= an2 115) (setq size '( 115 165 161 0)))
((= an2 120) (setq size '( 120 170 166 0)))
((= an2 125) (setq size '( 125 180 176 0)))
((= an2 130) (setq size '( 130 185 181 0)))
) ;cond

;----------------------------------------------------------------
(defun C:
BOLT (/ ocmde osmode an1 an2 ph bl size d1 h d k gd
          dg hc e m dp dk1 sl lh dp r h1 pt p1 p2 p3 p4
          p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17
          p18 p19 p20 p21 p22 p23 p24 p25 p1a p2a p3a p3b
          p4u p7u p8b m1 m2 tad drd l1 l2 l3 cent cpt pt1
          e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 e12 e13 e14
          e15 e16 e17 e18 e19 e20 olderr pit)
(setq olderr *error* *error* bot_er)
(setq ocmde (getvar "cmdecho"))
(setq oosmo (getvar "osmode"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
;---------------------------------------------------------------
(textpage)
(princ "n========================================================") 
(princ "n             [ BOLT/NUT/TAP ]       <metric>")
(princ "n========================================================")
(princ "n    * Hex.Bolt:   <1À°°¢º¼Æ®: Elev.    2À°°¢Æò¸é: Plan> ")
(princ "n    * Wrench Bolt:<3·»Ä¡º¼Æ®: Elev.    4·»Ä¡Æò¸é: Plan> ")
(princ "n    * Hex.Nut:    <5³ÓÆ®ÇÑÂʸéÄ¡: Elev.1   6³ÓÆ®¾çÂʸéÄ¡: Elev.2    7³ÓÆ®Æò¸é: Plan> ")
(princ "n    * Tap:        <8±íÀÌÅÇ: Depth    9°üÅëÅÇ: Thru.    10Æò¸éÅÇ: Plan> ")
(princ "n    * Stop Bolt:  <11¹«µÎº¼Æ®: Elev.>     ")
(princ "n========================================================")
(initget 7)
(setq an1 (getint "nSelect No.? : " ))
;------------ Hex.bolt --elevation
(if (= an1 1)  
(progn
(prompt "nBolt Range: 3,3.5,4,4.5,5,6,7,8,10,12,14,16,18,20,22,24,27,30,33,36,39,42,45,48,52,56,60,64,68,72,76,80") 
(initget 7)
(setq an2 (getreal "nBolt diameter (mm) : " ))
(cond
((= an2 3)  (setq size '(3 2 5.5 5.3 0.6 12 0 0 0.6)))
((= an2 3.5)(setq size '(3.5 2.4 6 5.8 0.6 14 0 0 0.6)))
((= an2 4)  (setq size '(4 2.8 7 6.8 0.8 14 0 0 0.75)))
((= an2 4.5)(setq size '(4.5 3.2 8 7.8 0.8 16 0 0 0.75)))
((= an2 5)  (setq size '(5 3.5 8 7.8 0.9 16 0 0 0.9)))
((= an2 6)  (setq size '(6 4 10 9.8 1 18 0 0 1)))
((= an2 7)  (setq size '(7 5 11 10.7 1 20 0 1)))
((= an2 8)  (setq size '(8 5.5 13 12.6 1.2 22 0 0 1.25)))
((= an2 10) (setq size '(10 7 17 16.5 1.5 26 0 0 1.5)))
((= an2 12) (setq size '(12 8 19 18 2 30 36 0 1.75)))
((= an2 14) (setq size '(14 9 22 21 2 34 40 0 2)))
((= an2 16) (setq size '(16 10 24 23 2 38 44 0 2)))
((= an2 18) (setq size '(18 12 27 26 2.5 42 48 0 2.5)))
((= an2 20) (setq size '(20 13 30 29 2.5 46 52 0 2.5)))
((= an2 22) (setq size '(22 14 32 31 2.5 50 56 0 2.5)))
((= an2 24) (setq size '(24 15 36 34 3 54 60 0 3)))
((= an2 27) (setq size '(27 17 41 39 3 60 66 79 3)))
((= an2 30) (setq size '(30 19 46 44 3.5 66 72 85 3.5)))
((= an2 33) (setq size '(33 21 50 48 3.5 72 78 91 3.5)))
((= an2 36) (setq size '(36 23 55 53 4 78 84 97 4)))
((= an2 39) (setq size '(39 25 60 57 4 84 90 103 0)))
((= an2 42) (setq size '(42 26 65 62 4.5 90 96 109 4.5)))
((= an2 45) (setq size '(45 28 70 67 4.5 96 102 115 0)))
((= an2 48) (setq size '(48 30 75 72 5 102 108 121 5)))
((= an2 52) (setq size '(52 33 80 77 5 0 116 129 0)))
((= an2 56) (setq size '(56 35 85 82 5.5 0 124 137 0)))
((= an2 60) (setq size '(60 38 90 87 5.5 0 132 145 0)))
((= an2 64) (setq size '(64 40 95 92 6 0 140 153 0)))
((= an2 68) (setq size '(68 43 100 97 6 0 148 161 0)))
((= an2 72) (setq size '(72 45 105 102 6 0 156 169 0)))
((= an2 76) (setq size '(76 48 110 107 6 0 164 177 0)))
((= an2 80) (setq size '(80 50 115 112 6 0 172 185 0)))
) ;cond
(setq pit (nth 8 size))
(setq pit (rtos pit))
(setq ph (getstring (strcat "nPitch (mm) <" pit ">:" )))
 (if (= ph "")
  (setq ph (atof pit))
  (setq ph (atof ph))
 ) 
(initget 7)
(setq bl (getreal "nBolt length (mm) : " ))
(setq d1 (nth 0 size)
       h (nth 1 size)
       b (nth 2 size)
       d (nth 3 size)
       k (nth 4 size)     
      gd (- d1 (* 1.082532 ph))                 ;;gol dia.
      dg (* (/ (/ b 2.0) (cos (dtr 30.0))) 2.0) ;;diagonal dia.
      hc (/ (/ (- dg d) 2.0) (sin (dtr 60.0)))  ;;head chamber length
      dp (/ (- d1 gd) 2.0)                      ;;gol depth
       r (* d1 1.5)
      h1 (* hc (sin (dtr 30.0))))               ;;r height
(graphscr)
(initget 1)
(setq pt (getpoint "nPick head lower center : " ))
(setq p1 (polar pt (dtr 0.0) (/ d1 2.0))
      p2 (polar pt (dtr 0.0) (/ dg 2.0))
     p3a (polar p2 (dtr 90.0) h)
      p4 (polar p3a (dtr 180.0) (/ (- dg d) 2.0))
     p3b (polar p4 (dtr -30.0) hc)
      p5 (polar p1 (dtr 90.0) (- h h1))
      p6 (polar p5 (dtr 180.0) d1)
      p7 (polar p4 (dtr 180.0) d)
     p8b (polar p3b (dtr 180.0) dg) 
      p9 (polar p2 (dtr 180.0) dg)
     p10 (polar p1 (dtr 180.0) d1)
     p11 (polar p10 (dtr 270.0) bl)
     p12 (polar p11 (dtr 0.0) d1)
     p13 (polar pt (dtr 180.0) (/ gd 2.0))
     p14 (polar p11 (dtr 0.0) k)
     p15 (polar p12 (dtr 180.0) k)
     p16 (polar p13 (dtr 0.0) gd)
     p17 (polar p11 (dtr 90.0) k)
     p18 (polar p12 (dtr 90.0) k)
     p19 (polar pt (dtr 90.0) h)
     p20 (polar p13 (dtr 270.0) (- bl (- k dp)))
     p21 (polar p16 (dtr 270.0) (- bl (- k dp)))
     p22 (polar p4 (dtr 180.0) 1.0)
     p23 (polar p4 (dtr -30.0) (/ hc 2.0)))
(command "line" p2 p3b "")                       (setq e1 (entlast))
(command "line" p3b p4 "")                       (setq e2 (entlast))
(command "line" p7 p4 "")                        (setq e3 (entlast))
(command "line" p6 p10 "")                       (setq e4 (entlast))
(command "line" p5 p1 "")                        (setq e5 (entlast))
(command "arc" p5 p19 p6)                        (setq e8 (entlast))
(command "circle" "3p" p5 "_tan" p22 "_tan" p23) (setq e6 (entlast))
(setq cent (entget e6))
(setq cpt (cdr (assoc 10 cent))) ;cen point
(setq crd (cdr (assoc 40 cent))) ;radius
(setq pt1 (polar cpt (dtr 60.0) crd))
(command "erase" e6 "")
(command "arc" pt1 "ce" cpt p5)                  (setq e7 (entlast))
(command "line" p18 p15 "")                      (setq e19 (entlast))
(command "mirror" e7 "" p19 pt "")               (setq e9 (entlast))
(command "mirror" e1 "" p19 pt "")               (setq e18 (entlast))
(command "mirror" e19 "" p19 pt "")              (setq e20 (entlast))
(command "line" p7 p8b "")                       (setq e10 (entlast))
(command "line" p9 p2 "")                        (setq e11 (entlast))
(command "line" p10 p17 "")                      (setq e12 (entlast))
(command "line" p14 p15 "")                      (setq e13 (entlast))
(command "line" p18 p1 "")                       (setq e14 (entlast))
(command "line" p17 p18 "")                      (setq e15 (entlast))
(command "line" p13 p20 "")                      (setq e16 (entlast))           
(command "line" p16 p21 "")                      (setq e17 (entlast))
(command "rotate" e1 e2 e3 e4 e5 e7 e8 e9 e10 e11 e12 e13 e14 e15 e16 e17 e18 e19 e20 "" pt pause)
(princ (strcat "nYou select: M" (rtos d1) "x" (rtos bl) "x P" (rtos ph)))
) ;progn
) ;if
;------------ Hex.Bolt --top
(if (= an1 2) 
(progn
(prompt "nBolt Range: 3,3.5,4,4.5,5,6,7,8,10,12,14,16,18,20,22,24,27,30,33,36,39,42,45,48,52,56,60,64,68,72,76,80")  
(initget 7)
(setq an2 (getreal "nBolt diameter (mm) : " ))
(graphscr)
(initget 1)
(setq pt (getpoint "nPick head center : " ))
(cond
((= an2 3)  (command "circle" pt "d" 5.3 "polygon" "6" pt "c" (/ 5.5 2.0)))
((= an2 3.5)(command "circle" pt "d" 5.8 "polygon" "6" pt "c" (/ 6.0 2.0)))
((= an2 4)  (command "circle" pt "d" 6.8 "polygon" "6" pt "c" (/ 7.0 2.0)))
((= an2 4.5)(command "circle" pt "d" 7.8 "polygon" "6" pt "c" (/ 8.0 2.0)))
((= an2 5)  (command "circle" pt "d" 7.8 "polygon" "6" pt "c" (/ 8.0 2.0)))
((= an2 6)  (command "circle" pt "d" 9.8 "polygon" "6" pt "c" (/ 10 2.0)))
((= an2 7)  (command "circle" pt "d" 10.7 "polygon" "6" pt "c" (/ 11 2.0)))
((= an2 8)  (command "circle" pt "d" 12.6 "polygon" "6" pt "c" (/ 13 2.0)))
((= an2 10) (command "circle" pt "d" 16.5 "polygon" "6" pt "c" (/ 17 2.0)))
((= an2 12) (command "circle" pt "d" 18 "polygon" "6" pt "c" (/ 19 2.0)))
((= an2 14) (command "circle" pt "d" 21 "polygon" "6" pt "c" (/ 22 2.0)))
((= an2 16) (command "circle" pt "d" 23 "polygon" "6" pt "c" (/ 24 2.0)))
((= an2 18) (command "circle" pt "d" 26 "polygon" "6" pt "c" (/ 27 2.0)))
((= an2 20) (command "circle" pt "d" 29 "polygon" "6" pt "c" (/ 30 2.0)))
((= an2 22) (command "circle" pt "d" 31 "polygon" "6" pt "c" (/ 32 2.0)))
((= an2 24) (command "circle" pt "d" 34 "polygon" "6" pt "c" (/ 36 2.0)))
((= an2 27) (command "circle" pt "d" 39 "polygon" "6" pt "c" (/ 41 2.0)))
((= an2 30) (command "circle" pt "d" 44 "polygon" "6" pt "c" (/ 46 2.0)))
((= an2 33) (command "circle" pt "d" 48 "polygon" "6" pt "c" (/ 50 2.0)))
((= an2 36) (command "circle" pt "d" 53 "polygon" "6" pt "c" (/ 55 2.0)))
((= an2 39) (command "circle" pt "d" 57 "polygon" "6" pt "c" (/ 60 2.0)))
((= an2 42) (command "circle" pt "d" 62 "polygon" "6" pt "c" (/ 65 2.0)))
((= an2 45) (command "circle" pt "d" 67 "polygon" "6" pt "c" (/ 70 2.0)))
((= an2 48) (command "circle" pt "d" 72 "polygon" "6" pt "c" (/ 75 2.0)))
((= an2 52) (command "circle" pt "d" 77 "polygon" "6" pt "c" (/ 80 2.0)))
((= an2 56) (command "circle" pt "d" 82 "polygon" "6" pt "c" (/ 85 2.0)))
((= an2 60) (command "circle" pt "d" 87 "polygon" "6" pt "c" (/ 90 2.0)))
((= an2 64) (command "circle" pt "d" 92 "polygon" "6" pt "c" (/ 95 2.0)))
((= an2 68) (command "circle" pt "d" 97 "polygon" "6" pt "c" (/ 100 2.0)))
((= an2 72) (command "circle" pt "d" 102 "polygon" "6" pt "c" (/ 105 2.0)))
((= an2 76) (command "circle" pt "d" 107 "polygon" "6" pt "c" (/ 110 2.0)))
((= an2 80) (command "circle" pt "d" 112 "polygon" "6" pt "c" (/ 115 2.0)))
) ;cond
(princ (strcat "nYou select: M" (rtos an2)))
) ;progn
) ;if
;------------Hex socket head bolt --elevation
(if (= an1 3)
(progn
(prompt "nBolt Range: 3,4,5,6,8,10,12,14,16,18,20,22,24,27,30,33,36,39,42,45,48,52")  
(initget 7)
(setq an2 (getreal "nBolt diameter (mm) : " ))
(initget 7)
(setq bl (getreal "nBolt length (mm) : " ))
(cond
((= an2 3)  (setq size '( 3 5.5 3 0.2 2.5 1.6 0.5 0.6)))
((= an2 4)  (setq size '( 4 7 4 0.3 3 2.2 0.7 0.8)))
((= an2 5)  (setq size '( 5 8.5 5 0.3 4 2.5 0.8 0.9)))
((= an2 6)  (setq size '( 6 10 6 0.4 5 3 1.0 1)))
((= an2 8)  (setq size '( 8 13 8 0.5 6 4 1.25 1.2)))
((= an2 10) (setq size '( 10 16 10 0.6 8 5 1.5 1.5)))
((= an2 12) (setq size '( 12 18 12 0.7 10 6 1.75 2)))
((= an2 14) (setq size '( 14 21 14 0.8 12 7 2.0 2)))
((= an2 16) (setq size '( 16 24 16 1 14 8 2.0 2)))
((= an2 18) (setq size '( 18 27 18 1 14 9 2.5 2.5)))
((= an2 20) (setq size '( 20 30 20 1 17 10 2.5 2.5)))
((= an2 22) (setq size '( 22 33 22 1 19 12 2.5 2.5)))
((= an2 24) (setq size '( 24 36 24 1 19 12 3.0 3)))
((= an2 27) (setq size '( 27 40 27 1.5 19 13.5 3.0 3)))
((= an2 30) (setq size '( 30 45 30 1.5 22 15 3.5 3.5)))
((= an2 33) (setq size '( 33 50 33 1.5 24 16.5 3.5 3.5)))
((= an2 36) (setq size '( 36 54 36 1.5 27 18 4.0 4)))
((= an2 39) (setq size '( 39 58 39 1.5 27 20 4.0 4)))
((= an2 42) (setq size '( 42 63 42 2 32 21 4.5 4.5)))
((= an2 45) (setq size '( 45 68 45 2 32 23 4.5 4.5)))
((= an2 48) (setq size '( 48 72 48 2 36 24 5.0 5)))
((= an2 52) (setq size '( 52 78 52 2.5 36 26 5.0 5)))
) ;cond
(setq d1 (nth 0 size)
       d (nth 1 size)
       h (nth 2 size)
       e (nth 3 size)
       b (nth 4 size)
       m (nth 5 size)
      ph (nth 6 size)
       k (nth 7 size)
      gd (- d1 (* 1.082532 ph))                   ;;gol dia.
      dg (* (/ (/ b 2.0) (cos (dtr 30.0))) 2.0)   ;;hex diagonal dia.
      hc (/ e (cos (dtr 60.0)))                   ;;head chamfer length
      dp (/ (- d1 gd) 2.0)                        ;;gol depth
     dk1 (/ (/ b 2.0) (cos (dtr 30.0)))           ;;socket width
      sl (/ (/ dg 2.0) (cos (dtr 30.0))))         ;;socket slop length
(graphscr)
(initget 1)
(setq pt (getpoint "nPick head lower center : " ))
(setq p1 (polar pt (dtr 0.0) (/ d 2.0))
     p2a (polar p1 (dtr 90.0) h)
      p2 (polar p2a (dtr 270.0) e)
      p3 (polar p2 (dtr 150.0) hc)
      p5 (polar p2 (dtr 180.0) d)
      p4 (polar p5 (dtr 30.0) hc)
      p6 (polar p1 (dtr 180.0) d)
      p7 (polar p6 (dtr 0.0) (/ (- d d1) 2.0))
      p8 (polar p7 (dtr 270.0) (- bl k))
     p13 (polar p7 (dtr 0.0) dp)
     p23 (polar p7 (dtr 270.0) bl)
      p9 (polar p23 (dtr 0.0) k)
     p10 (polar p9 (dtr 0.0) (- d1 (* k 2.0)))
     p11 (polar p8 (dtr 0.0) d1)
     P12 (polar p7 (dtr 0.0) d1)
     P14 (polar p13 (dtr 270.0) (- bl (- k dp)))
     p15 (polar p13 (dtr 0.0) gd)
     p16 (polar p14 (dtr 0.0) gd)
     p24 (polar p6 (dtr 90.0) h)
     p17 (polar p24 (dtr 0.0) (+ (/ (- d dg) 2.0) dg))
     p18 (polar p17 (dtr 270.0) m)
     p19 (polar p24 (dtr 0.0) (+ (/ (- d dk1) 2.0) dk1))
     p20 (polar p19 (dtr 270.0) m)
     p21 (polar p18 (dtr 180.0) (/ dg 2.0))
     p22 (polar p18 (dtr 210.0) sl)
     p25 (polar p18 (dtr 180.0) dg))
(command "line" p3 p2 "")   (setq e19 (entlast))
(command "line" p11 p10 "") (setq e20 (entlast))
(command "line" p1 p2 "")   (setq e1 (entlast))
(command "line" p3 p4 "")   (setq e2 (entlast))
(command "line" p5 p6 "")   (setq e3 (entlast))
(command "line" p6 p1 "")   (setq e4 (entlast))
(command "line" p7 p8 "")   (setq e5 (entlast))
(command "line" p9 p10 "")  (setq e6 (entlast))
(command "line" p11 p12 "") (setq e7 (entlast))
(command "line" p5 p2 "")   (setq e8 (entlast))           
(command "line" p13 p14 "") (setq e9 (entlast))           
(command "line" p15 p16 "") (setq e10 (entlast))           
(command "line" p8 p11 "")  (setq e11 (entlast))          
(command "line" p17 p18 "") (setq e12 (entlast))   
(command "line" p19 p20 "") (setq e13 (entlast))
(command "line" p18 p21 "") (setq e14 (entlast))
(command "mirror" e12 "" p21 pt "") (setq e15 (entlast))
(command "mirror" e13 "" p21 pt "") (setq e16 (entlast))
(command "mirror" e14 "" p21 pt "") (setq e17 (entlast))
(command "mirror" e19 "" p21 pt "") (setq e21 (entlast))
(command "mirror" e20 "" p21 pt "") (setq e22 (entlast))
(command "arc" p18 p22 p25)         (setq e18 (entlast))
(command "rotate" e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 e12 e13 e14 e15 e16 e17 e18 e19 e20 e21 e22 "" pt pause)
(princ (strcat "nYou select: M" (rtos d1) "x" (rtos bl) "x P" (rtos ph)))
) ;progn
) ;if
;------------ Hex.socket head bolt --top
(if (= an1 4) 
(progn
(prompt "nBolt Range: 3,4,5,6,8,10,12,14,16,18,20,22,24,27,30,33,36,39,42,45,48,52")    
(initget 7)
(setq an2 (getreal "nBolt diameter (mm) : " ))
(graphscr)
(initget 1)
(setq pt (getpoint "nPick head center : " ))
(cond
((= an2 3)  (command "circle" pt "d" 5.5 "polygon" "6" pt "c" (/ 2.5 2.0)))
((= an2 4)  (command "circle" pt "d" 7.0 "polygon" "6" pt "c" (/ 3.0 2.0)))
((= an2 5)  (command "circle" pt "d" 8.5 "polygon" "6" pt "c" (/ 4.0 2.0)))
((= an2 6)  (command "circle" pt "d" 10  "polygon" "6" pt "c" (/ 5.0 2.0)))
((= an2 8)  (command "circle" pt "d" 13  "polygon" "6" pt "c" (/ 6.0 2.0)))
((= an2 10) (command "circle" pt "d" 16  "polygon" "6" pt "c" (/ 8.0 2.0)))
((= an2 12) (command "circle" pt "d" 18  "polygon" "6" pt "c" (/ 10 2.0)))
((= an2 14) (command "circle" pt "d" 21  "polygon" "6" pt "c" (/ 12 2.0)))
((= an2 16) (command "circle" pt "d" 24  "polygon" "6" pt "c" (/ 14 2.0)))
((= an2 18) (command "circle" pt "d" 27  "polygon" "6" pt "c" (/ 14 2.0)))
((= an2 20) (command "circle" pt "d" 30  "polygon" "6" pt "c" (/ 17 2.0)))
((= an2 22) (command "circle" pt "d" 33  "polygon" "6" pt "c" (/ 17 2.0)))
((= an2 24) (command "circle" pt "d" 36  "polygon" "6" pt "c" (/ 19 2.0)))
((= an2 27) (command "circle" pt "d" 40  "polygon" "6" pt "c" (/ 19 2.0)))
((= an2 30) (command "circle" pt "d" 45  "polygon" "6" pt "c" (/ 22 2.0)))
((= an2 33) (command "circle" pt "d" 50  "polygon" "6" pt "c" (/ 24 2.0)))
((= an2 36) (command "circle" pt "d" 54  "polygon" "6" pt "c" (/ 27 2.0)))
((= an2 39) (command "circle" pt "d" 58  "polygon" "6" pt "c" (/ 27 2.0)))
((= an2 42) (command "circle" pt "d" 63  "polygon" "6" pt "c" (/ 32 2.0)))
((= an2 45) (command "circle" pt "d" 68  "polygon" "6" pt "c" (/ 32 2.0)))
((= an2 48) (command "circle" pt "d" 72  "polygon" "6" pt "c" (/ 36 2.0)))
((= an2 52) (command "circle" pt "d" 78  "polygon" "6" pt "c" (/ 36 2.0)))
) ;cond
(princ (strcat "nYou select: M" (rtos an2)))
) ;progn
) ;if
;------------ Hex.nut (1st)--elevation
(if (= an1 5) 
(progn
(prompt "nNut Range: 2,2.2,2.3,2.5,2.6,3,3.5,4,4.5,5,6,7,8,10,12,14,16,18,20,22,24,27,30,33,36,39,42,45,48,52,56,60,64,68,72,76,80,85,90,95,100,105,110,115,120,125,130") 
(initget 7)
(setq an2 (getreal "nBolt diameter (mm) : " ))
(cond
((= an2 2)  (setq size '( 2 1.6 4 3.8)))
((= an2 2.2)(setq size '( 2.2 1.8 4.5 4.3)))
((= an2 2.3)(setq size '( 2.3 1.8 4.5 4.3)))
((= an2 2.5)(setq size '( 2.5 2 5 4.7)))
((= an2 2.6)(setq size '( 2.6 2 5 4.7)))
((= an2 3)  (setq size '( 3 2.4 5.5 5.3)))
((= an2 3.5)(setq size '( 3 2.8 6 5.8)))
((= an2 4)  (setq size '( 4 3.2 7 6.8)))
((= an2 4.5)(setq size '( 4.5 3.6 8 7.8)))
((= an2 5)  (setq size '( 5 4 8 7.8)))
((= an2 6)  (setq size '( 6 5 10 9.8)))
((= an2 7)  (setq size '( 7 5.5 11 10.8)))
((= an2 8)  (setq size '( 8 6.5 13 12.5)))
((= an2 10) (setq size '( 10 8 17 16.5)))
((= an2 12) (setq size '( 12 10 19 18)))
((= an2 14) (setq size '( 14 11 22 21)))
((= an2 16) (setq size '( 16 13 24 23)))
((= an2 18) (setq size '( 18 15 27 26)))
((= an2 20) (setq size '( 20 16 30 29)))
((= an2 22) (setq size '( 22 18 32 31)))
((= an2 24) (setq size '( 24 19 36 34)))
((= an2 27) (setq size '( 27 22 41 39)))
((= an2 30) (setq size '( 30 24 46 44)))
((= an2 33) (setq size '( 33 26 50 48)))
((= an2 36) (setq size '( 36 29 55 53)))
((= an2 39) (setq size '( 39 31 60 57)))
((= an2 42) (setq size '( 42 32 65 62)))
((= an2 45) (setq size '( 45 36 70 67)))
((= an2 48) (setq size '( 48 38 75 72)))
((= an2 52) (setq size '( 52 42 80 77)))
((= an2 56) (setq size '( 56 45 85 82)))
((= an2 60) (setq size '( 60 48 90 87)))
((= an2 64) (setq size '( 64 51 95 92)))
((= an2 68) (setq size '( 68 54 100 97)))
((= an2 72) (setq size '( 72 58 105 102)))
((= an2 76) (setq size '( 76 61 110 107)))
((= an2 80) (setq size '( 80 64 115 112)))
((= an2 85) (setq size '( 85 68 120 116)))
((= an2 90) (setq size '( 90 72 130 126)))
((= an2 95) (setq size '( 95 76 135 131)))
((= an2 100) (setq size '( 100 80 145 141)))
((= an2 105) (setq size '( 105 84 150 146)))
((= an2 110) (setq size '( 110 88 155 151)))
((= an2 115) (setq size '( 115 92 165 161)))
((= an2 120) (setq size '( 120 96 170 166)))
((= an2 125) (setq size '( 125 100 180 176)))
((= an2 130) (setq size '( 130 104 185 181)))
) ;cond
(setq d1 (nth 0 size)
       h (nth 1 size)
       b (nth 2 size)
       d (nth 3 size)
      dg (* (/ (/ b 2.0) (cos (dtr 30.0))) 2.0)   ;;diagonal dia.
      hc (/ (/ (- dg d) 2.0) (sin (dtr 60.0)))    ;;head chamber length
      h1 (* hc (sin (dtr 30.0))))                 ;;r height
(graphscr)
(initget 1)
(setq pt (getpoint "nPick nut lower center : " ))
(setq p1 (polar pt (dtr 0.0) (/ d1 2.0))
      p2 (polar pt (dtr 0.0) (/ dg 2.0))
     p3a (polar p2 (dtr 90.0) h)
      p4 (polar p3a (dtr 180.0) (/ (- dg d) 2.0))
     p3b (polar p4 (dtr -30.0) hc)
      p5 (polar p1 (dtr 90.0) (- h h1))
      p6 (polar p5 (dtr 180.0) d1)
      p7 (polar p4 (dtr 180.0) d)
     p8b (polar p3b (dtr 180.0) dg) 
      p9 (polar p2 (dtr 180.0) dg)
     p10 (polar p1 (dtr 180.0) d1)
     p16 (polar p1 (dtr 180.0) 0.5)
     P19 (polar pt (dtr 90.0) h)
     P22 (polar p4 (dtr 180.0) 1.0)
     p23 (polar p4 (dtr -30.0) (/ hc 2.0)))
(command "line" p2 p3b "") (setq e1 (entlast)) 
(command "line" p3b p4 "") (setq e2 (entlast))
(command "line" p7 p4 "")  (setq e3 (entlast)) 
(command "line" p6 p10 "") (setq e4 (entlast))
(command "line" p5 p1 "")  (setq e5 (entlast))
(command "circle" "3p" p5 "_tan" p22 "_tan" p23)  (setq e6 (entlast))
(setq cent (entget e6))
(setq cpt (cdr (assoc 10 cent))) ;cen point
(setq crd (cdr (assoc 40 cent))) ;radius
(setq pt1 (polar cpt (dtr 60.0) crd))
(command "erase" e6 "")
(command "arc" pt1 "ce" cpt p5)    (setq e7 (entlast))
(command "arc" p5 p19 p6)          (setq e8 (entlast))
(command "mirror" e7 "" p19 pt "") (setq e9 (entlast))
(command "mirror" e1 "" p19 pt "") (setq e11 (entlast))
(command "line" p7 p8b "")         (setq e12 (entlast))
(command "line" p9 p2 "")          (setq e10 (entlast))
(command "rotate" e1 e2 e3 e4 e5 e7 e8 e9 e10 e11 e12 "" pt pause)
(princ (strcat "nYou select: M" (rtos d1)))
) ;progn
) ;if
;------------ Hex.nut (2nd)--elevation
(if (= an1 6) 
(progn
(prompt "nNut Range: 2,2.2,2.3,2.5,2.6,3,3.5,4,4.5,5,6,7,8,10,12,14,16,18,20,22,24,27,30,33,36,39,42,45,48,52,56,60,64,68,72,76,80,85,90,95,100,105,110,115,120,125,130")  
(initget 7)
(setq an2 (getreal "nBolt diameter (mm) : " ))
(cond
((= an2 2)  (setq size '( 2 1.6 4 3.8)))
((= an2 2.2)(setq size '( 2.2 1.8 4.5 4.3)))
((= an2 2.3)(setq size '( 2.3 1.8 4.5 4.3)))
((= an2 2.5)(setq size '( 2.5 2 5 4.7)))
((= an2 2.6)(setq size '( 2.6 2 5 4.7)))
((= an2 3)  (setq size '( 3 2.4 5.5 5.3)))
((= an2 3.5)(setq size '( 3 2.8 6 5.8)))
((= an2 4)  (setq size '( 4 3.2 7 6.8)))
((= an2 4.5)(setq size '( 4.5 3.6 8 7.8)))
((= an2 5)  (setq size '( 5 4 8 7.8)))
((= an2 6)  (setq size '( 6 5 10 9.8)))
((= an2 7)  (setq size '( 7 5.5 11 10.8)))
((= an2 8)  (setq size '( 8 6.5 13 12.5)))
((= an2 10) (setq size '( 10 8 17 16.5)))
((= an2 12) (setq size '( 12 10 19 18)))
((= an2 14) (setq size '( 14 11 22 21)))
((= an2 16) (setq size '( 16 13 24 23)))
((= an2 18) (setq size '( 18 15 27 26)))
((= an2 20) (setq size '( 20 16 30 29)))
((= an2 22) (setq size '( 22 18 32 31)))
((= an2 24) (setq size '( 24 19 36 34)))
((= an2 27) (setq size '( 27 22 41 39)))
((= an2 30) (setq size '( 30 24 46 44)))
((= an2 33) (setq size '( 33 26 50 48)))
((= an2 36) (setq size '( 36 29 55 53)))
((= an2 39) (setq size '( 39 31 60 57)))
((= an2 42) (setq size '( 42 32 65 62)))
((= an2 45) (setq size '( 45 36 70 67)))
((= an2 48) (setq size '( 48 38 75 72)))
((= an2 52) (setq size '( 52 42 80 77)))
((= an2 56) (setq size '( 56 45 85 82)))
((= an2 60) (setq size '( 60 48 90 87)))
((= an2 64) (setq size '( 64 51 95 92)))
((= an2 68) (setq size '( 68 54 100 97)))
((= an2 72) (setq size '( 72 58 105 102)))
((= an2 76) (setq size '( 76 61 110 107)))
((= an2 80) (setq size '( 80 64 115 112)))
((= an2 85) (setq size '( 85 68 120 116)))
((= an2 90) (setq size '( 90 72 130 126)))
((= an2 95) (setq size '( 95 76 135 131)))
((= an2 100) (setq size '( 100 80 145 141)))
((= an2 105) (setq size '( 105 84 150 146)))
((= an2 110) (setq size '( 110 88 155 151)))
((= an2 115) (setq size '( 115 92 165 161)))
((= an2 120) (setq size '( 120 96 170 166)))
((= an2 125) (setq size '( 125 100 180 176)))
((= an2 130) (setq size '( 130 104 185 181)))
) ;cond
(setq d1 (nth 0 size)
       h (nth 1 size)
       b (nth 2 size)
       d (nth 3 size)
      dg (* (/ (/ b 2.0) (cos (dtr 30.0))) 2.0) ;;diagonal dia.
      hc (/ (/ (- dg d) 2.0) (sin (dtr 60.0)))  ;;head chamber length
      h1 (* hc (sin (dtr 30.0))))               ;;r height
(graphscr)
(initget 1)
(setq pt (getpoint "nPick nut lower center : " ))
(setq p1a (polar pt (dtr 0.0) (/ d1 2.0))
       p1 (polar p1a (dtr 90.0) h1)
      p2a (polar pt (dtr 0.0) (/ dg 2.0))
       p2 (polar p2a (dtr 90.0) h1)
      p3a (polar p2a (dtr 90.0) h)
       p4 (polar p3a (dtr 180.0) (/ (- dg d) 2.0))
      P4u (polar p4 (dtr 270.0) h)
      p3b (polar p4 (dtr -30.0) hc)
       p5 (polar p1a (dtr 90.0) (- h h1))
       p6 (polar p5 (dtr 180.0) d1)
       p7 (polar p4 (dtr 180.0) d)
      p7u (polar p7 (dtr 270.0) h)
      p8a (polar p3a (dtr 180.0) dg)
      p8b (polar p3b (dtr 180.0) dg) 
       p9 (polar p2 (dtr 180.0) dg)
      p10 (polar p1 (dtr 180.0) d1)
      p16 (polar p1a (dtr 180.0) 0.5)
      P19 (polar pt (dtr 90.0) h)
      P22 (polar p4 (dtr 180.0) 1.0)
      p23 (polar p4 (dtr -30.0) (/ hc 2.0))
       m1 (polar p8a (dtr 270.0) (/ h 2.0))
       m2 (polar m1 (dtr 0.0) dg))
(command "line" p2 p3b "") (setq e1 (entlast)) 
(command "line" p3b p4 "") (setq e2 (entlast))
(command "line" p4 p7 "")  (setq e3 (entlast))
(command "line" p7 p8b "") (setq e4 (entlast))
(command "line" p8b p9 "") (setq e5 (entlast))
(command "line" p5 p1 "")  (setq e6 (entlast))
(command "line" p6 p10 "") (setq e7 (entlast))
(command "circle" "3p" p5 "_tan" p22 "_tan" p23) (setq e8 (entlast))
(setq cent (entget e8))
(setq cpt (cdr (assoc 10 cent))) ;cen point
(setq crd (cdr (assoc 40 cent))) ;radius
(setq pt1 (polar cpt (dtr 60.0) crd))
(command "erase" e8 "")
(command "arc" p5 p19 p6)          (setq e10 (entlast))
(command "arc" pt1 "ce" cpt p5)    (setq e9 (entlast))
(command "mirror" e9 "" p19 pt "") (setq e11 (entlast))
(command "mirror" e10 "" m1 m2 "") (setq e12 (entlast))
(command "mirror" e9 "" m1 m2 "")  (setq e13 (entlast))
(command "mirror" e2 "" m1 m2 "")  (setq e14 (entlast))
(command "mirror" e11 "" m1 m2 "") (setq e15 (entlast))
(command "mirror" e4 "" m1 m2 "")  (setq e16 (entlast))
(command "mirror" e3 "" m1 m2 "")  (setq e17 (entlast))
(command "rotate" e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 e12 e13 e14 e15 e16 e17 "" pt pause)
(princ (strcat "nYou select: M" (rtos d1)))
) ;progn
) ;if
;------------ Hex.nut --top
(if (= an1 7) 
(progn
(prompt "nNut Range: 2,2.2,2.3,2.5,2.6,3,3.5,4,4.5,5,6,7,8,10,12,14,16,18,20,22,24,27,30,33,36,39,42,45,48,52,56,60,64,68,72,76,80,85,90,95,100,105,110,115,120,125,130")  
(initget 7)
(setq an2 (getreal "nBolt diameter (mm) : " ))
(tplist)
(setq pit (nth 3 size))
(setq pit (rtos pit))
(setq ph (getstring (strcat "nPitch (mm) <" pit ">:" )))
 (if (= ph "")
  (setq ph (atof pit))
  (setq ph (atof ph))
 ) 
(setq d1 (nth 0 size)
       b (nth 1 size)
       d (nth 2 size)
      dg (* (/ (/ b 2.0) (cos (dtr 30.0))) 2.0)   ;;diagonal dia.
      gd (- d1 (* 1.082532 ph)))                  ;;gol dia.
(graphscr)
(initget 1)
(setq pt (getpoint "nPick nut center : " ))
(setq p1 (polar pt (dtr 0.0) (/ d1 2.0)))
(command "circle" pt "d" gd 
         "arc" p1 "c" pt "a" "270"
         "circle" pt "d" d
         "polygon" "6" pt "c" (/ b 2.0))
(princ (strcat "nYou select: M" (rtos d1) "x P" (rtos ph)))
) ;progn
) ;if
;------------Tap depth --elevation
(if (= an1 8) 
(progn
(initget 7)
(setq an2 (getreal "nBolt diameter (mm) : " ))
(tplist)
(setq d1 an2)
(setq pit (nth 3 size))
(setq pit (rtos pit))
(setq ph (getstring (strcat "nPitch (mm) <" pit ">:" )))
  (if (= ph "")
    (setq ph (atof pit))
    (setq ph (atof ph))
  )
(initget 7)
(setq tad (getreal "nTap depth (mm) : " ))
(initget 7)
(setq drd (getreal "nDrill depth (mm) : " ))
(setq gd (- d1 (* 1.082532 ph))            ;;gol dia.
      l1 (/ (- d1 gd) 2.0)
      l2 (/ l1 (cos (dtr 30.0)))           ;;tap diagonal length
      l3 (/ (/ gd 2.0) (cos (dtr 30.0))))  ;;dr diagonal length
(graphscr)
(initget 1)
(setq pt (getpoint "nPick upper center : " ))
(setq p1 (polar pt (dtr 0.0) (/ gd 2.0))
      p2 (polar p1 (dtr 270.0) drd)
      p3 (polar p2 (dtr 180.0) gd)
      p4 (polar p1 (dtr 180.0) gd)
      p5 (polar pt (dtr 0.0) (/ d1 2.0))
      p6 (polar p5 (dtr 270.0) tad)
      p7 (polar p6 (dtr 210.0) l2)
      p8 (polar p5 (dtr 180.0) d1)
      p9 (polar p8 (dtr 270.0) tad)
     p10 (polar p7 (dtr 180.0) gd)
     p11 (polar p2 (dtr 210.0) l3))
(command "line" p8 p9 "")  (setq e1 (entlast)) 
(command "line" p6 p5 "")  (setq e2 (entlast))    
(command "line" p4 p3 "")  (setq e3 (entlast)) 
(command "line" p11 p2 "") (setq e4 (entlast)) 
(command "line" p2 p1 "")  (setq e5 (entlast)) 
(command "line" p9 p6 "")  (setq e6 (entlast))         
(command "line" p9 p10 "") (setq e7 (entlast))          
(command "line" p6 p7 "")  (setq e8 (entlast))         
(command "line" p3 p2 "")  (setq e9 (entlast))
(command "line" p3 p11 "") (setq e10 (entlast)) 
(command "rotate" e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 "" pt pause)
(princ (strcat "nYou select: M" (rtos d1) "x P" (rtos ph)))
) ;progn
) ;if
;------------Tap thru --elevation
(if (= an1 9) 
(progn
(initget 7)
(setq an2 (getreal "nBolt diameter (mm) : " ))
(tplist)
(setq d1 an2)
(setq pit (nth 3 size))
(setq pit (rtos pit))
(setq ph (getstring (strcat "nPitch (mm) <" pit ">:" )))
  (if (= ph "")
    (setq ph (atof pit))
    (setq ph (atof ph))
  )
(initget 7)
(setq tad (getreal "nTap depth (mm) : " ))
(setq gd (- d1 (* 1.082532 ph)))            ;;gol dia.
(graphscr)
(initget 1)
(setq pt (getpoint "nPick upper center : " ))
(setq p1 (polar pt (dtr 0.0) (/ gd 2.0))
      p2 (polar p1 (dtr 270.0) tad)
      p3 (polar p2 (dtr 180.0) gd)
      p4 (polar p1 (dtr 180.0) gd)
      p5 (polar pt (dtr 0.0) (/ d1 2.0))
      p6 (polar p5 (dtr 270.0) tad)
      p7 (polar p5 (dtr 180.0) d1)
      p8 (polar p7 (dtr 270.0) tad))
(command "line" p7 p8 "") (setq e1 (entlast)) 
(command "line" p4 p3 "") (setq e2 (entlast))  
(command "line" p1 p2 "") (setq e3 (entlast))  
(command "line" p5 p6 "") (setq e4 (entlast))
(command "rotate" e1 e2 e3 e4 "" pt pause)
(princ (strcat "nYou select: M" (rtos d1) "x P" (rtos ph)))
) ;progn
) ;if
;------------Tap --top
(if (= an1 10) 
(progn
(initget 7)
(setq an2 (getreal "nBolt diameter (mm) : " ))
(tplist)
(setq d1 an2)
(setq pit (nth 3 size))
(setq pit (rtos pit))
(setq ph (getstring (strcat "nPitch (mm) <" pit ">:" )))
  (if (= ph "")
    (setq ph (atof pit))
    (setq ph (atof ph))
  )
(setq gd (- d1 (* 1.082532 ph)))            ;;gol dia.
(graphscr)
(initget 1)
(setq pt (getpoint "nPick tap center : " ))
(setq p1 (polar pt (dtr 0.0) (/ d1 2.0)))
(command "circle" pt "d" gd
         "arc" p1 "c" pt "a" "270")
(princ (strcat "nYou select: M" (rtos d1) "x P" (rtos ph)))
) ;progn
) ;if
;------------Stop bolt --elevation
(if (= an1 11)
(progn
(prompt "nBolt Range: 3,4,5,6,8,10,12,14,16,18,20")   
(initget 7)
(setq an2 (getreal "nBolt diameter (mm) : " ))
(initget 7)
(setq bl (getreal "nBolt length (mm) : " ))
(cond
((= an2 3)  (setq size '( 3 0.5 1.5 0.3 1.5 0.6)))
((= an2 4)  (setq size '( 4 0.7 2 0.3 2 0.8)))
((= an2 5)  (setq size '( 5 0.8 2.5 0.5 2.5 0.9)))
((= an2 6)  (setq size '( 6 1.0 3 0.5 3 1)))
((= an2 8)  (setq size '( 8 1.25 4 0.6 4 1.2)))
((= an2 10) (setq size '( 10 1.5 5 0.8 4 1.5)))
((= an2 12) (setq size '( 12 1.75 6 1 5 2)))
((= an2 14) (setq size '( 14 2.0 6 1 6 2)))
((= an2 16) (setq size '( 16 2.0 8 1.1 6 2)))
((= an2 18) (setq size '( 18 2.5 8 1.1 8 2.5)))
((= an2 20) (setq size '( 20 2.5 10 1.2 8 2.5)))
) ;cond
(setq d1 (nth 0 size)
      ph (nth 1 size)
       b (nth 2 size)
       e (nth 3 size)
       m (nth 4 size)
       k (nth 5 size)
      gd (- d1 (* 1.082532 ph))                   ;;gol dia.
      dg (* (/ (/ b 2.0) (cos (dtr 30.0))) 2.0)   ;;hex diagonal dia.
      dp (/ (- d1 gd) 2.0)                        ;;gol depth
     dk1 (/ (/ b 2.0) (cos (dtr 30.0)))           ;;socket width
      sl (/ (/ dg 2.0) (cos (dtr 30.0)))          ;;socket slop length
      lh (/ (- d1 gd) 2.0)
      l1 (/ e (sin (dtr 30.0)))
      l2 (/ lh (cos (dtr 30.0))) 
      l3 (/ lh (cos (dtr 45.0)))) 
(graphscr)
(initget 1)
(setq pt (getpoint "nPick upper center : " ))
(setq p1 (polar pt (dtr 0.0) (/ d1 2.0))
      p2 (polar p1 (dtr 270.0) e)
      p3 (polar p2 (dtr 150.0) l1)
      p4 (polar p2 (dtr 150.0) l2)
      p7 (polar p2 (dtr 180.0) d1)
      p5 (polar p7 (dtr 30.0) l1)
      p6 (polar p7 (dtr 30.0) l2)
     p11 (polar p1 (dtr 270.0) bl)
      p8 (polar p1 (dtr 270.0) (- bl k))
      p9 (polar p11 (dtr 180.0) k)
     p10 (polar p8 (dtr 225.0) l3)
     P12 (polar p11 (dtr 180.0) d1)
     P13 (polar p8 (dtr 180.0) d1)
     p14 (polar p12 (dtr 0.0) k)
     p15 (polar p10 (dtr 180.0) gd)
     p16 (polar pt (dtr 0.0) (/ dg 2.0))
     p17 (polar p16 (dtr 270.0) m)
     p18 (polar pt (dtr 0.0) (/ dk1 2.0))
     p19 (polar p18 (dtr 270.0) m)
     p20 (polar pt (dtr 270.0) m)
     p21 (polar p17 (dtr 210.0) sl)
     p22 (polar p17 (dtr 180.0) dg))
(command "line" p2 p3 "")   (setq e1 (entlast))
(command "line" p3 p5 "")   (setq e19 (entlast))
(command "line" p9 p14 "")  (setq e20 (entlast))
(command "line" p5 p7 "")   (setq e2 (entlast)) 
(command "line" p13 p14 "") (setq e3 (entlast)) 
(command "line" p9 p8 "")   (setq e4 (entlast))  
(command "line" p8 p2 "")   (setq e5 (entlast))   
(command "line" p7 p2 "")   (setq e6 (entlast)) 
(command "line" p13 p8 "")  (setq e7 (entlast)) 
(command "line" p7 p13 "")  (setq e8 (entlast))  
(command "line" p6 p15 "")  (setq e9 (entlast)) 
(command "line" p4 p10 "")  (setq e10 (entlast)) 
(command "line" p2 p8 "")   (setq e11 (entlast)) 
(command "line" p16 p17 "") (setq e12 (entlast))   
(command "line" p18 p19 "") (setq e13 (entlast))
(command "line" p20 p17 "") (setq e14 (entlast))
(command "mirror" e12 "" pt p20 "") (setq e15 (entlast))
(command "mirror" e13 "" pt p20 "") (setq e16 (entlast))
(command "mirror" e14 "" pt p20 "") (setq e17 (entlast))
(command "arc" p17 p21 p22)         (setq e18 (entlast))
(command "rotate" e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 e12 e13 e14 e15 e16 e17 e18 e19 e20 "" pt pause)
(princ (strcat "nYou select: M" (rtos d1) "x" (rtos bl) "x P" (rtos ph)))
) ;progn
) ;if
;-----------------------
(setvar "cmdecho" ocmde)                              
(setvar "osmode" oosmo)
(setq *error* olderr)
(princ)                                              
)
;;;;;;;;;;;;;;;;;;;;;;
(princ "ntHEX.BOLT&NUT/TAP/WRENCH BOLT/STOP BOLT[typing BOLT]")
(princ)