프로그램
캐드 분류

고수님들 볼트 리습 수정 부 탁 드립니다

컨텐츠 정보

본문

안녕하세요 설계쪽 일을하면서 렌치볼트를 많이 그리는데요

관련 리습을 구했는데 추가로 수정 좀 부탁 드립니다.
고수님들 도움 꼭 부탁 드려요
1.수정 – 마지막에 볼트가 반토막 잘린 모양으로만 나오내요… 대칭으로 가능하고 좀..부탁드려요
2.추가 기능 – 볼트 그린후에 볼트 규격도 같이 나오게 가능할까요?
부탁 드립니다.
————————————————–
;;;——————————————————————-
;;;This macro is to draw hexasocketbolt, plan of tap, section of tap hole,
;;;circle of c'bore, section of c'bore and plan of hexabolt.
;;;lisp by Jeong chan-mho
;;;1992
;;;———————————————————————-
;;—————BOLT C'BORE BORING LISP——————————
(princ "Please wait ! Bolt lisp is loading now.")
(defun choice(/)
(cond
          ((equal bt 3.0000 0.0001) (setq d 2.75  d1 3.0   h1 3.3   d2 1.7  he 2.5))
          ((equal bt 4.0000 0.0001) (setq d 3.5   d1 3.5   h1 4.5   d2 2.25 he 3.0))
          ((equal bt 5.0000 0.0001) (setq d 4.25  d1 4.8   h1 5.5   d2 2.75 he 4.0))
          ((equal bt 6.0000 0.0001) (setq d 5.0   d1 5.5   h1 7.0   d2 3.5  he 5.0))
          ((equal bt 8.0000 0.0001) (setq d 6.5   d1 7.0   h1 9.0   d2 4.5  he 6.0))
          ((equal bt 10.0000 0.0001)(setq d 8.0   d1 9.0   h1 11.0  d2 5.5  he 8.0))
          ((equal bt 12.0000 0.0001)(setq d 9.0   d1 10.0  h1 13.0  d2 6.5  he 10.0))
          ((equal bt 14.0000 0.0001)(setq d 10.5  d1 11.5  h1 15.2  d2 8.0  he 12.0))
          ((equal bt 16.0000 0.0001)(setq d 12.0  d1 13.0  h1 18.0  d2 9.0  he 14.0))
          ((equal bt 20.0000 0.0001)(setq d 15.0  d1 16.0  h1 22.0  d2 11.0 he 17.0))
          ((equal bt 24.0000 0.0001)(setq d 18.0  d1 19.5  h1 26.0  d2 13.0 he 19.0))
          ((> bt 24.0)(setq d (* bt 0.75) d1 (+ d 1.5) h1 (+ bt 2.0)
                          d2 (+ (/ bt 2.0) 1)  he (* bt 0.72)))
          (t (prompt "is not bolt size:"))
       ); bolt size condition closed
)
;;——————————————————————–
(defun btborerr (s)
   (if (/= s "Funtion cancelled") ;if an error(such as ctrl-c) accurs
       (princ (strcat "nError: " s)) ;while this command active
   )
   (setvar "blipmode" blip)
   (setvar "osmode" os)
   (setvar "cmdecho" cmde)
   (setvar "orthomode" ortho)
   (if (/= en1 nil)(entdel en1))
   (command "undo" "e")
   (setq *error* older)    ;Restore old *error* handeler
   (princ)
)
;;;———————————————————————-
(defun C:BTC-BOR (/ older os ortho blip cmde cho e ea pt d2 bt d11 h1 pt1 en1
                    en2 en3 en4 en5 pt2 pt3 pt4 pt5 pt6 pt7 xx)
   (setq older *error*)
   (setq *error* btborerr)
   (command "undo" "group")
   (COMMAND "LAYER" "s" "0″ "")
   (setq blip (getvar "blipmode"))
   (setq os (getvar "osmode"))
   (setq cmde (getvar "cmdecho"))
   (setq ortho (getvar "orthomode"))
   (setvar "blipmode" 0)
   (setvar "cmdecho" 0)
   (setvar "orthomode" 1)
   (initget "Circle Size")
   (setq cho (getkword "Drawing Method: pick ircle/ Size:"))
   (if (/= cho "Size")
       (progn
          (setq e nil)
          (while (null e)
             (setq e (entsel "n Select C'Bore inner circle:"))
             (if e
               (progn
                  (setq pt (cadr e))
                  (setq e (car e))
                  (if (and
                         (= (cdr (assoc 0 (entget e))) "CIRCLE")
                         (= (cdr (assoc 62 (entget e))) 7)
                      )
                      (progn
                         (setq ea (entget e))
                         (setq d2 (cdr (assoc 40 ea)))
                         (setq d2 (* d2 2))
                         (cond
                            ((= d2 3.4) (setq bt 3   d1 3.0   h1 3.3  ))
                            ((= d2 4.5) (setq bt 4   d1 3.5   h1 4.5  ))
                            ((= d2 5.5) (setq bt 5   d1 4.8   h1 5.5  ))
                            ((= d2 6.6) (setq bt 6   d1 5.5   h1 7.0  ))
                            ((= d2 9.0) (setq bt 8   d1 7.0   h1 9.0  ))
                            ((= d2 11.0) (setq bt 10  d1 9.0   h1 11.0 ))
                            ((= d2 13.0) (setq bt 12  d1 10.0  h1 13.0 ))
                            ((= d2 16.0) (setq bt 14  d1 11.5  h1 15.2 ))
                            ((= d2 18.0) (setq bt 16  d1 13.0  h1 18.0 ))
                            ((= d2 22.0)(setq bt 20  d1 16.0  h1 22.0 ))
                            ((= d2 26.0)(setq bt 24  d1 19.5  h1 26.0 ))
                            ((> d2 26.0)(setq bt (* (- d2 1) 2.0)
                                           d1 (+ (* bt 0.75) 1.5) h1 (+ bt 2)))
                            (t
                              (progn
                                (prompt "nSelect is not bolt count circle:")
                                (setq e nil)
                              )
                            )
                         )
                      )
                      (progn
                         (prompt "n Error :Entity is not inner circle:")
                         (setq e nil)
                      )
                  )
                )
             )
          )
          (setq d2 (/ d2 2))
          (setq pt (osnap pt "cen"))
          (initget 1)
          (setq pt1 (getpoint pt "nEnter C'bore base line point:"))
          (setvar "osmode" 0)
          (command "line" pt pt1 "")
          (setq en1 (entlast))
      )
   )
   (if (= cho "Size")
       (progn
          (setq d1 nil)
          (while (null d1)
              (setq bt (getdist "n Enter bolt size: M<10>"))
              (if (= bt nil)(setq bt 10))
              (choice)
          )
       )
   )
   (setvar "osmode" 32)
   (princ "(Aperture box is intsec)")
   (setq pt1 (getpoint "n Enter bolt counter head point:"))
   (setq pt2 (getpoint pt1 "n Enter end point:"))
   (setvar "osmode" 0)
   (setq ang (angle pt1 pt2))
   (setq ang1 (+ ang (/ pi 2.0)))
   (setq pt3 (polar pt1 ang h1)
         pt4 (polar pt1 ang1 d1)
         pt5 (polar pt3 ang1 d1)
         pt6 (polar pt3 ang1 d2)
         pt7 (polar pt2 ang1 d2)
   )
   (command "Line" pt6 pt7 "")
   (setq en2 (entlast))
   (command "line" pt4 pt5 pt3 "")
   (setq en3 (entnext en2)
         en4 (entnext en3))
   (setq pt1 (polar pt1 (- ang pi) 0))
   (setq pt2 (polar pt2 ang 0))
   (if (/= en1 nil)(entdel en1))
   (command "line" pt1 pt2 "")
   (setq en5 (entlast))
   (command "change" en5 "" "P" "la" "1″ "")
   (initget "Yes No")
   (setq xx (getkword "n Continue mirror: / N :"))
   (prompt "n Delete old object?:")
   (if (/= xx "No")
       (command "mirror" en2 en3 en4 "" pt1 pt2 pause)
   )
   (setvar "blipmode" blip)
   (setvar "osmode" os)
   (setvar "cmdecho" cmde)
   (setvar "orthomode" ortho)
   (command "undo" "e")
   (setq *error* older)    ;Restore old *error* handeler
   (princ)
)
;;;——————————————————————
;;—————BOLT C'BORE CIRCLE LISP—————————–
(defun btcirerr (s)
   (if (/= s "Funtion cancelled") ;if an error(such as ctrl-c) accurs
       (princ (strcat "nError: " s)) ;while this command active
   )
   (setvar "blipmode" blip)
   (setvar "osmode" os)
   (setvar "cmdecho" cmde)
   (setvar "pickbox" pic)
   (command "LAYER" "s" lay "")
   (command "undo" "e")
   (setq *error* older)    ;Restore old *error* handeler
   (princ)
)
;;;——————————————————————-
(defun c:BTC-CIR(/ older os blip cmde lay pic cho ki es ans e ea pt bt
                   pt1 ss ans1)
   (setq older *error*)
   (setq *error* btcirerr)
   (command "undo" "group")
   (COMMAND "LAYER" "s" "0″ "")
   (setq blip (getvar "blipmode"))
   (setq os (getvar "osmode"))
   (setq cmde (getvar "cmdecho"))
   (setq lay (getvar "clayer"))
   (setq pic (getvar "pickbox"))
   (setvar "blipmode" 0)
   (setvar "cmdecho" 0)
   (initget "Size Circle")
   (setq cho (getkword "Drawing Method: pick ircle / Size: "))
   (setvar "osmode" 0)
   (initget "Yes No")
   (setq ans (getkword "n Hidden line change to outline: Y : "))
   (if (/= cho "Size")
       (progn
          (setq ki 5)
          (while  ki
            (setq es 7)
            (while es
               (setq e nil)
               (setq e (entsel "n Select arc or circle of Tap:"))
               (setq pt2 (cadr e))
               (if (/= e nil)
                   (progn
                      (setq e (car e))
                      (if (and (/= (cdr (assoc 0 (entget e))) "ARC")
                               (/= (cdr (assoc 0 (entget e))) "CIRCLE")
                          )
                          (prompt "n Entity is not tap :")
                          (progn
                             (setq ea (entget e))
                             (setvar "pickbox" 1)
                             (setq pt (osnap pt2 "cen"))
                             (if (= (cdr (assoc 0 ea)) "ARC")
                                 (progn
                                    (setq bt (cdr (assoc 40 ea)))
                                    (setq pt1 (polar pt (* 1.25 pi)(* bt 1.42)))
                                    (setq pt2 (polar pt (* 0.25 pi)(* bt 1.42)))
                                    (setq ss (ssget "w" pt1 pt2))
                                    (if (/= ss nil)(command "erase" ss ""))
                                 )
                                 (progn
                                    (setq bt (cdr (assoc 40 ea)))
                                    (setq bt (/ bt 0.85))
                                    (setq pt1 (polar pt (* 1.25 pi)(* bt 1.42)))
                                    (setq pt2 (polar pt (* 0.25 pi)(* bt 1.42)))
                                    (setq ss (ssget "w" pt1 pt2))
                                    (if (/= ss nil)(command "erase" ss ""))
                                 )
                             )
                             (setq bt (* bt 2.0))
                             (setq la (itoa (atoi (rtos bt))))
                             (choice)
                             (setq la (strcat "m" la))
                             (command "layer" "m" la "")
                             (command "circle" pt d2)
                             (command "change" (entlast) "" "P" "LA" "0″ "")
                             (command "circle" pt d1)
                             (command "change" (entlast) "" "p" "la" "2″ "")
                             (if (= ans "Yes")
                                 (command "change" (entlast) "" "p" "la" "0″ "")
                             )
                             (setvar "pickbox" 4)
                          )
                      )
                   )
                   (setq es nil)
               )
            )
            (setq ki nil)
          )
       )
   )
   (if (= cho "Size")
       (progn
          (setq bt (getint "n Enter bolt size:M<10>"))
          (if (= bt nil) (setq bt 10))
          (choice)
          (setq la (itoa bt))
          (setq la (strcat "m" la))
          (command "layer" "m" la "")
          (setvar "osmode" 32)
          (setq ki 7)
          (while ki
             (setq pt (getpoint "n Pick C'Bore center point:(aperture box int)"))
             (if (= pt nil)(setq ki nil))
             (if (/= pt nil)
                 (progn
                   (command "circle" pt d2)
                   (command "change" (entlast) "" "P" "LA" "0″ "")
                   (command "circle" pt d1)
                   (command "change" (entlast) "" "p" "la" "2″ "")
                   (if (= ans "Yes")
                       (command "change" (entlast) "" "p" "la" "0″ "")
                   )
                 )
             )
          )
      )
   )
   (setvar "blipmode" blip)
   (setvar "osmode" os)
   (setvar "cmdecho" cmde)
   (setvar "pickbox" pic)
   (command "LAYER" "s" lay "")
   (command "undo" "e")
   (setq *error* older)    ;Restore old *error* handeler
   (princ)
)
;;;———————————————————————
;;—————- BOLT HEAD DRAWING LISP——————————-
(defun headerr (s)
   (if (/= s "Funtion cancelled") ;if an error(such as ctrl-c) accurs
       (princ (strcat "nError: " s)) ;while this command active
   )
   (setvar "blipmode" blip)
   (setvar "gridmode" grid)
   (setvar "osmode" os)
   (setvar "cmdecho" cmde)
   (command "undo" "e")
   (setq *error* older)    ;Restore old *error* handeler
   (princ)
)
;;————-BOLT HEAD DRAWING PROGRAM————————————
(defun c:BOLTHEAD (/ older os grid blip cmde bt d2 k pt mt d d1 he)
   (setq older *error*)
   (setq *error* headerr)
   (command "undo" "group")
   (COMMAND "LAYER" "s" "0″ "")
   (setq blip (getvar "blipmode"))
   (setq grid (getvar "gridmode"))
   (setq os (getvar "osmode"))
   (setq cmde (getvar "cmdecho"))
   (setvar "blipmode" 0)
   (setvar "cmdecho" 0)
   (if (= bthe nil)(setq bthe 10))
   (setq bt bthe)
   (setq bthe (getint (strcat "n Last used. Bolt size
                   ,Enter new size:")))
   (if (/= bthe nil)
       (setq bt bthe)
   )
   (choice)
   (setq d2 (* d 0.87))
   (setq k 5)
   (while k
      (setvar "osmode" 32)
      (setq mt (strcat "M"(itoa bt)))
      (setq pt (getpoint  "n Enter bolt position:"))
      (if (= pt nil)
          (setq k nil)
          (progn
             (setvar "osmode" 0)
             (command "CIRCLE" pt d2)
             (command "CIRCLE" pt d1)
             (command "CIRCLE" pt d)
             (command "POLYGON" "6″ pt "c" (/ he 2.0))
             (command "TEXT" "m" pt "3″ "0″ mt)
             (command "CHANGE" (entlast) "" "p" "LA" "40″ "")
          )
      )
   )
   (setvar "blipmode" blip)
   (setvar "gridmode" grid)
   (setvar "osmode" os)
   (setvar "cmdecho" cmde)
   (command "undo" "e")
   (setq *error* older)    ;Restore old *error* handeler
   (princ)
)
;;;—————————————————————–
;;————— TAP HOLE DRAWING LISP——————————
(defun taphoerr (s)
   (if (/= s "Funtion cancelled") ;if an error(such as ctrl-c) accurs
       (princ (strcat "nError: " s)) ;while this command active
   )
   (setvar "blipmode" blip)
   (setvar "osmode" os)
   (setvar "cmdecho" cmde)
   (setvar "orthomode" ortho)
   (if (/= en1 nil)(entdel en1))
   (command "undo" "e")
   (setq *error* older)    ;Restore old *error* handeler
   (princ)
)
;;—————MAIN PROGRAM LISP——————-
(defun C:TAPHOLE (/ older os ortho blip cmde cho e ea pt d2 bt d1 h1 pt1 en1
                    en2 en3 en4 en5 pt2 pt3 pt4 pt5 pt6 pt7 xx)
   (setq older *error*)
   (setq *error* taphoerr)
   (command "undo" "group")
   (COMMAND "LAYER" "s" "0″ "")
   (setq blip (getvar "blipmode"))
   (setq os (getvar "osmode"))
   (setq cmde (getvar "cmdecho"))
   (setq ortho (getvar "orthomode"))
   (setvar "blipmode" 0)
   (setvar "cmdecho" 0)
   (setvar "orthomode" 1)
   (initget "Circle Size")
   (setq cho (getkword "Drawing Method: pick ircle / Size:"))
   (if (/= cho "Size")
       (progn
          (setq e nil)
          (while (null e)
             (setq e (entsel "n Select Tapping circle:"))
             (if e
               (progn
                  (setq e (car e))
                  (if (and (/= (cdr (assoc 0 (entget e))) "CIRCLE")
                           (/= (cdr (assoc 0 (entget e))) "ARC")
                      )
                      (progn
                         (prompt "n Error :Entity is tap:")
                         (setq e nil)
                      )
                  )
                )
             )
          )
          (setq ea (entget e))
          (command "UCS" "e" e)
          (setq pt (trans (cdr (assoc 10 ea)) e 1))
          (setvar "osmode" 0)
          (initget 1)
          (setq pt1 (getpoint pt "nEnter Tapping hole line point:"))
          (setvar "osmode" 0)
          (command "line" pt pt1 "")
          (setq en1 (entlast))
          (command "ucs" "P")
          (if (= (cdr (assoc 0 ea)) "ARC")
              (setq d (* (cdr (assoc 40 ea)) 2.0))
              (setq d (* (/ (cdr (assoc 40 ea)) 0.85) 2.0))
          )
       )
   )
   (if (= cho "Size")
       (progn
          (setq d1 nil)
          (while (null d1)
              (setq bt (getdist "n Enter bolt size: M<10>"))
              (if (= bt nil)(setq bt 10))
              (choice)
          )
          (setq d bt)
       )
   )
   (command "osnap" "int,end")
   (setq pt1 (getpoint "n Enter tap start point:"))
   (setq pt2 (getpoint pt1 "n Enter end point:"))
   (setq ang (angle pt1 pt2))
   (setq dis (distance pt1 pt2))
   (setq ang1 (+ ang (/ pi 2.0)))
   (setq d1 (/ d 2.0))
   (setq ss (ssadd))
   (setvar "osmode" 0)
   (initget "Through Drill")
   (setq thr (getkword (strcat
       "n Tappng dist:"(rtos dis)" bolt size:M"(rtos d 2 0)"
            , Tap hole: Through/:")))
   (if (= thr "Through")
       (progn
         (setq pt3 (polar pt1 ang1 d1))
         (setq pt4 (polar pt2 ang1 d1))
         (setq pt5 (polar pt1 ang1 (* d1 0.85)))
         (setq pt6 (polar pt2 ang1 (* d1 0.85)))
         (command "Line" pt5 pt6 "")
         (setq en2 (entlast))
         (command "line" Pt3 pt4 "")
         (setq en3 (entnext en2))
         (command "change" en3 "" "p" "LA" "4″ "")
         (setq ss (ssadd en2 ss))
         (setq ss (ssadd en3 ss))
       )
   )
   (if (/= thr "Through")
       (progn
         (setq pt3 (polar pt1 ang1 d1)
               pt4 (polar pt1 ang (* d 1.8))
               pt5 (polar pt4 ang1 d1)
               pt6 (polar pt4 ang1 (* 0.85 d1))
               pt6 (polar pt6 ang (* 0.15 1.732 d1))
               pt7 (polar pt1 ang1 (* 0.85 d1))
               pt8 (polar pt1 ang (* d 2.1))
               pt9 (polar pt8 ang1 (* 0.85 d1))
               pt2 (polar pt8 ang (* 0.577 0.85 d1))
         )
         (command "Line" pt4 pt5 "")
         (setq en2 (entlast))
         (command "line" pt7 pt9 pt8 "")
         (command "line" pt9 pt2 "")
         (command "line" pt3 pt5 pt6 "")
         (setq en3 (entnext en2)
               en4 (entnext en3)
               en5 (entnext en4)
               en6 (entnext en5)
               en7 (entnext en6)
         )
         (command "change" en6 en7 "" "p" "LA" "4″ "")
         (setq ss (ssadd en2 ss)
               ss (ssadd en3 ss)
               ss (ssadd en4 ss)
               ss (ssadd en5 ss)
               ss (ssadd en6 ss)
               ss (ssadd en7 ss)
         )
       )
   )
   (setq pt1 (polar pt1 (- ang pi) 0))
   (setq pt2 (polar pt2 ang 0))
   (if (/= en1 nil)(entdel en1))
   (command "line" pt1 pt2 "")
   (setq en5 (entlast))
   (command "change" en5 "" "P" "la" "1″ "")
   (setvar "osmode" 1)
   (initget "Yes No")
   (setq xx (getkword "n Continue mirror: / N :"))
   (prompt "n Delete od object?:")
   (if (/= xx "No")
       (command "mirror" ss "" pt1 pt2 pause)
   )
   (setvar "blipmode" blip)
   (setvar "osmode" os)
   (setvar "cmdecho" cmde)
   (setvar "orthomode" ortho)
   (command "undo" "e")
   (setq *error* older)    ;Restore old *error* handeler
   (princ)
)
;;;————————————————————–
;;;————–TAP CIRCLE LISP——————————–
(defun tapierr(s)
   (if (/= s "Function cancelled") ;if an error (such as ctrl-c) occurs
       (princ (strcat "nError:" s));while this command is active
   )
   (setvar "osmode" os)
   (setvar "blipmode" blip)
   (setq *error* olderr) ;restore old *error* handler
   (princ)
)
;—————Main Program————————–
(defun dtr (f)(* pi (/ f 180.0)))
(defun C:TAP (/ os blip tap b k pt1 c d pt2 pt3)
   (setq olderr *error*
         *error* tapierr)
   (setq blip (getvar "blipmode"))
   (COMMAND "LAYER" "s" "0″ "")
   (setq os (getvar "osmode"))
   (setvar "cmdecho"  0)
   (setvar "blipmode" 0)
   (if (= tapsz nil) (setq tapsz 6))
   (setq tap tapsz)
   (setq tapsz (getint (strcat "n Last used Tapping size is:< M "(itoa tapsz )" >,  Enter new size:  or Return:")))
   (if (= tapsz nil)
       (setq tapsz tap))
   (setq b tapsz)
   (setq k 5)
   (while k
       (setvar "osmode" 32)
       (setq pt1 (getpoint "nPick Tapping point;"))
       (if (/= pt1 nil)
         (progn
           (setq c (/ b 2.0))
           (setq d (* c 0.85))
           (setvar "OSMODE" 0)
           (setq pt2 (polar pt1 (dtr 270) c))
           (setq pt3 (polar pt1 (dtr 180) c))
           (command "arc" "c" pt1 pt2 pt3)
           (command "change" "l" "" "p" "LA" "4″ "")
           (command "circle" pt1 d)
         )
       )
       (if (= pt1 nil)(setq k nil))
   )
   (setvar "osmode" os)
   (setvar "blipmode" blip)
   (setq *error* olderr)
   (princ)
);defun closed
;;;————————————————————–
;;;——————BOLT DRAWING LISP—————————
(defun bolter (s)
   (if (/= s "Funtion cancelled") ;if an error(such as ctrl-c) accurs
       (princ (strcat "nError: " s)) ;while this command active
   )
   (setvar "blipmode" blip)
   (setvar "gridmode" grid)
   (setvar "osmode" os)
   (setvar "cmdecho" cmde)
   (setvar "highlight" high)
   (setvar "orthomode" ortho)
   (if (/= en nil)(entdel en))
   (if (/= en1 nil)(entdel en1))
   (command "undo" "e")
   (setq *error* older)    ;Restore old *error* handeler
   (princ)
)
;;———————————————————————
(defun dtr (a) (* pi (/ a 180.0)))
;;————-BOLT SET DRAWING PROGRAM————————————
(defun C:BOLTAS(/ older os ortho grid blip cmde high bt p0 p1 ang1 ang2 ang3 ang4
                dis1 dis2 dis3 ch e cen en d d1 d2 h1
                p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19
                en1 en2 en3 en4 en5 en6 en7 en8 en9 en10 en11 en12 en14 en15
                ena enb1 enb2 enb3
                ps dr)
   (setq older *error*)
   (setq *error* bolter)
   (command "undo" "group")
   (COMMAND "LAYER" "s" "0″ "")
   (setq blip (getvar "blipmode"))
   (setq grid (getvar "gridmode"))
   (setq os (getvar "osmode"))
   (setq cmde (getvar "cmdecho"))
   (setq high (getvar "highlight"))
   (setq ortho (getvar "orthomode"))
   (setvar "orthomode" 0)
   (setvar "blipmode" 0)
   (setvar "cmdecho" 0)
   (setvar "highlight" 0)
   (setvar "orthomode" 1)
   (initget "Circle Size")
   (setq ch (getkword
       "nDrawing method:(Press C= pick circle):Return= "))
   (if (/= ch "Circle")
       (progn
          (setq bt (getint "nEnter bolt size:M<10>"))
          (if (= bt nil)
              (setq bt 10)
          )
       )
   )
   (if (= ch "Circle")
       (progn
          (setq e nil)
          (while (null e)
             (setq e (entsel "n Select circle of Tap draw:"))
             (if e
                (progn
                   (setq e (car e))
                   (if (and (/= (cdr (assoc 0 (entget e))) "CIRCLE")
                            (/= (cdr (assoc 0 (entget e))) "ARC")
                       )
                       (setq e nil)
                   )
                )
             )
          )
          (setq ea (entget e))
          (setq bt (cdr (assoc 40 ea)))
          (setq bt (* bt 2.0))
          (if (= (cdr (assoc 0 ea)) "CIRCLE")
              (setq bt (/ bt 0.85))
          )
          (command "UCS" "e" e)
          (setq cen (trans (cdr (assoc 10 ea)) e 1))
          (setq p0 (getpoint cen "n Enter bolt base line point:"))
          (setvar "osmode" 0)
          (command "line" cen p0 "")
          (setq en (entlast))
          (command "ucs" "P")
       )
   )
   (setvar "osmode" 32)
   (setq p0 (getpoint "nPick Bolt head point:"))
   (setq p1 (getpoint p0 "nPick Bolting point:"))
   (setq ang1 (angle p0 p1) ang4 (angle p1 p0))
   (setq dp (getpoint p0 "  Pick draw side or Return = left :"))
   (if dp
       (progn
          (setq ang2 (angle p0 dp))
          (if (or (equal ang2 ang1 0.0005)
                  (equal ang2 ang4 0.0005)
              )
;;                (setq ang2 (angle p0 dp))
                (setq ang2 (+ ang1 (dtr 90)))
          )
       )
       (setq ang2 (- ang1 (dtr 90)))
   )
   (setq ang3 (+ ang2 pi))
   (if (/= en nil) (entdel en))
   (choice)
   (initget "In Out")
   (setq ps (getkword "n Bolt head set  position: :inner O:outer: "))
   (if (= ps "Out")
       (setq p0 (polar p0 ang4 h1))
   )
   (setvar "osmode" 0)
   (setq p2 (polar p0 ang1 h1))
   (setq dis1 (distance p2 p1)  dis2 (* bt 0.075)
         dis3 (- (/ bt 2.0) dis2))
   ;;;—————–point  select————————————-
   (if (<= dis1 (+ bt (* dis2 2.0)))
       (setq p3 (polar p1 ang4 (/ dis1 2.0)))
       (setq p3 (polar p1 ang4 bt))
   )
   (setq p5 (polar p1 ang1 (* bt 1.5))
         p4 (polar p5 ang4 dis2)
         p6 (polar p5 ang1 (* bt 0.3))
         p7 (polar p6 ang1 (* bt 0.3))
         p8 (polar p7 ang1 (* dis3 0.577))
         p10 (polar p2 ang4 bt)
         p9 (polar p10 ang1 dis2)
         p11 (polar p2 ang2 (/ bt 2.0))
         p12 (polar p2 ang2 d2)
         p13 (polar p2 ang2 d)
         p14 (polar p0 ang2 d1)
         p15 (polar p3 ang2 dis3)
         p16 (polar p5 ang2 dis3)
         p17 (polar p4 ang2 (/ bt 2.0))
         p18 (polar p1 ang2 d2)
         p19 (polar p7 ang2 dis3)
         p20 (polar p3 ang2 (/ bt 2.0))
         p20 (polar p20 ang4 (* dis2 1.732))
   );;setq closed
   ;;—————————————————
   (command "line" p0 p9 "")  (setq en1 (entlast))
   (command "line" p2 p11 "")  (setq en2 (entnext en1))
   (command "copy" en1 "" p9 p13)
   (command "copy" en1 "" "m" p0 p11 p15 p16 p17 "")
   (command "copy" en2 "" "m" p2 p9 p10 p3 p4 p5 "")
   ;;———————————————-
   (setq en3 (entnext en2)   en4 (entnext en3)
         en5 (entnext en4)   en6 (entnext en5)
         en7 (entnext en6)   en8 (entnext en7)
         en9 (entnext en8)   en10 (entnext en9)
         en11 (entnext en10)  en12 (entnext en11)
   )
   ;;—————————————————
   (setvar "FILLETRAD" 0)
   (setvar "CHAMFERA" dis2)
   (setvar "CHAMFERB" dis2)
   (command "chamfer" en3 en9)
   (command "chamfer" en4 en12)
   (command "fillet" en3 en8)
   (command "fillet" en3 en2)
   (command "fillet" en5 en12)
   (setq en13 (entnext en12)
         en14 (entnext en13))
   (command "line" p12 p18 "")
   (setq en15 (entlast))
   (command "line" p15 p20 "")
   (setq en16 (entlast))
   (command "change" en5 en7 en16 "" "p" "LA" "4″ "")
   ;;—————————————————
   (setq ss (ssadd))
   (setq ss (ssadd en2  ss))
   (setq ss (ssadd en3  ss))
   (setq ss (ssadd en4  ss))
   (setq ss (ssadd en5  ss))
   (setq ss (ssadd en6  ss))
   (setq ss (ssadd en7  ss))
   (setq ss (ssadd en8  ss))
   (setq ss (ssadd en9  ss))
   (setq ss (ssadd en10  ss))
   (setq ss (ssadd en11  ss))
   (setq ss (ssadd en12  ss))
   (setq ss (ssadd en13  ss))
   (setq ss (ssadd en14  ss))
   (setq ss (ssadd en15  ss))
   (setq ss (ssadd en16  ss))
   ;;—————————————————-
   (if (/= ps "Out")
       (progn
          (command "copy" en1 "" p0 p14)
          (setq ena (entlast))
          (command "fillet" ena en2)
          (setq ss (ssadd ena ss))
       )
   )
   ;;—————————————————–
   (initget "No Yes")
   (setq dr (getkword "n Continue drawing Drill and Tapping: N / "))
   (if (/= dr "No")
       (progn
          (command "copy" en11 "" p4 p6)
          (setq enb1 (entlast))
          (command "fillet" en7 enb1)
          (command "line" p7 p19 p8 "")
          (setq enb2 (entnext enb1)
                enb3 (entnext enb2))
          (command "fillet" en6 enb2)
          (setq p6 (polar p6 ang2 (/ bt 2.0)))
          (command "copy" en16 "" p20 p6)
          (setq enb4 (entlast))
          (setq ss (ssadd enb1 ss)
                ss (ssadd enb2 ss)
                ss (ssadd enb3 ss)
                ss (ssadd enb4 ss)
          )
       )
   )
   ;;——————————————————
   (initget "No")
   (setq mi (getkword "n Continue drawing Mirror: N / "))
   (if (/= mi "No")
       (progn
          (prompt "n Delete old object: ")
          (command "mirror" ss "" p0 p2 pause)
       )
   )
   (entdel en1)
   (setq p1 (polar p0 ang4 0))
   (setq p2 (polar p8 ang1 0))
   (command "line" P1 p2 "")
   (command "change" (entlast) "" "p" "la" "1″"")
   (setvar "blipmode" blip)
   (setvar "gridmode" grid)
   (setvar "osmode" os)
   (setvar "cmdecho" cmde)
   (setvar "highlight" high)
   (setvar "orthomode" ortho)
   (command "undo" "e")
   (setq *error* older)    ;Restore old *error* handeler
   (princ)
)
;;;———————END—————————————

관련자료

댓글 2

수야12님의 댓글

레이어가 없어서 정상작동을 안했네요 

일단 문자표시는 다 넣어놨으니 필요없는 부분은 직접 삭제 하시면 됩니다 
여분필드1 여분필드2 여분필드3
전체 73 / 2 페이지
번호
제목
이름
알림 0