안녕하세요 인터넷상에서 어렵게찾은 밀핀 테이블을 만들어주는 리습입니다.
리습사용시 홀테이블좌표는 정상정으로 나옵니다만
X.Y좌표값이 소수점 4자리까지 나오는데 소수점 2자리까지 나오게 하려면 어떤거를 고쳐야하는지 가르쳐주시면 감사합니다.
아래는 해당 리습 입니다.
;;; ATPOSDIM LISP
;;; POSITION THAT MOLD EJECTER PIN IS SELECTED OF WINDOW TEXT LISP
;;; LISP By Jeong chan mho
;;; DATE 1993,7,JUNE
;;;——————————————————-
(defun atposder (s)
(if (/= s “Function cancelled”)
(princ (strcat “Error: ” s))
)
(setvar “BLIPMODE” blip)
(setvar “osmode” os)
(command “undo” “e”)
(setvar “cmdecho” cmd)
(setvar “orthomode” orth)
(setvar “highlight” hig)
(setq *error* old)
(princ)
)
;;;———————————————————
(defun dtr (a)
(* pi (/ a 180.0)))
;;;—————–Main program——————————
(defun C:EP (/ )
(setq old *error*
*error* atposder)
(setq blip (getvar “blipmode”)
os (getvar “osmode”)
orth (getvar “orthomode”)
hig (getvar “highlight”)
cmd (getvar “cmdecho”)
lfa (getvar “dimlfac”)
scal (getvar “dimscale”)
)
(command “undo” “group”)
(setvar “cmdecho” 0)
(setvar “blipmode” 0)
(setvar “osmode” 0)
(setvar “orthomode” 0)
(setvar “highlight” 0)
(setq inst (getstring “nEnter initial string:<E> “))
(if (= inst “”)(setq inst “E”))
(setq inst (strcase inst))
(setq numf 1)
(setq ht (* (getvar “dimtxt”) scal))
(setq tht ht)
(setq ht (getreal (strcat
“nEnter X Y coordinate Text Height : <“(rtos ht 2 1)”> “)))
(if (= ht nil)(setq ht tht))
;; (setq ht tht)
(setq ht1 (* ht 0.9))
(setq bcorg (getpoint “nPick dim base point:or (RETURN is UCSORG point)”))
(if (= bcorg nil)
(setq bc (getvar “ucsorg”))
(progn
(command “ucs” “o” bcorg)
(setq bc (getvar “ucsorg”))
)
)
(initget 1)
(setq pt1 (getpoint “n Pick left upper of window for multi select circle:”))
(initget 33)
(setq pt2 (getcorner pt1 “nPick right lower point of window select circle:”))
(setq bcx (car bc))
(setq bcy (cadr bc))
;; (command “zoom” “e”)
;; (setq poin (getvar “vsmax”))
(setq poin (getpoint “nPick dim text start point”))
(setq pok (list (car poin) (+ (cadr poin) (* ht 2.125))))
(setq p1 (list (+ (car pok) (* ht 2.0)) (- (cadr pok) (* ht 1.7)))
p2 (list (+ (car p1) (* ht 7)) (cadr p1))
p3 (list (+ (car p2) (* ht 7)) (cadr p1))
p4 (list (+ (car p3) (* ht 5.5)) (cadr p1))
p5 (list (+ (car pok) (* ht 30)) (cadr pok))
)
(command “line” pok p5 “”)
(command “change” (entlast) “” “p” “c” “2” “”)
(command “text” “c” p1 ht “0” “No”)
(command “text” “r” p2 ht “” “X”)
(command “text” “r” p3 ht “” “Y”)
(command “text” “r” p4 ht “” “DIA”)
(setq ss (entsel
“nSelect a cirlce for layer select or (RETURN for enter layer name):”))
(if (= ss nil)
(progn
(menucmd “S=CHLA”)
(setq lay (strcase (getstring “n Enter name of layer:”)))
(menucmd “S=”)
)
(setq lay (cdr (assoc 8 (entget (car ss)))))
)
(setq ss (ssget “c” pt1 pt2))
(if (/= ss nil)
(progn
(setq n (sslength ss))
(setq inde 0)
(setq ssa (ssadd))
(repeat n
(setq e (ssname ss inde))
(setq en (entget e))
(setq ena (cdr (assoc 0 en)))
(setq enb (cdr (assoc 8 en)))
(if (and (= ena “CIRCLE”) (= enb lay))
(setq ssa (ssadd e ssa))
)
(setq inde (1+ inde))
)
)
)
(setq xxx (car pt1))
(setq yyy (cadr pt1))
(setq xdata xxx)
(setq ydata yyy)
(setq glk 6)
(while glk
(if (= rad nil)
(setq rad (cdr (assoc 40 (entget (ssname ssa 0)))))
)
(setq s1 (ssadd) inde 0 n (sslength ssa))
(setq s2 (ssadd))
(repeat n
(setq e (ssname ssa inde))
(setq r (cdr (assoc 40 (entget e))))
(if (equal r rad 0.005)
(setq s2 (ssadd e s2))
(setq s1 (ssadd e s1))
)
(setq inde (1+ inde))
)
(setq xdata xxx)
(setq ydata yyy)
(setq n2 (sslength s2))
(if (/= n2 0)
(progn
(setq in 0)
(setq kk 4)
(while kk
(setq s4 (ssadd))
(setq s3 (ssadd))
(repeat n2
(setq ee (ssname s2 in))
(setq leny (cadr (cdr (assoc 10 (entget ee)))))
(setq leny (- leny bcy))
(if (>= leny ydata)
(setq s3 (ssadd ee s3))
(setq s4 (ssadd ee s4))
)
(setq in (1+ in))
)
(setq n3 (sslength s3))
(if (/= n3 0)
(progn
(setq yy 5)
(setq inde3 0)
(setq xdata xxx)
(while yy
(setq s5 (ssadd))
(repeat n3
(setq e (ssname s3 inde3))
(setq len (car (cdr (assoc 10 (entget e)))))
(setq len (- len bcx))
(if (<= len xdata)
(atpotext)
(setq s5 (ssadd e s5))
)
(setq inde3 (1+ inde3))
)
(setq s3 s5)
(setq xdata (1+ xdata))
(setq n3 (sslength s3))
(if (= n3 0)(setq yy nil)
(setq inde3 0)
)
)
)
)
(setq s2 s4)
(setq ydata (1- ydata))
(setq n2 (sslength s2))
(if (= n2 0)
(setq kk nil) (setq in 0)
)
)
)
)
(setq ssa s1)
(setq rad nil)
(if (/= ssa nil)(setq n (sslength ssa)))
(if (= n 0)(setq glk nil)
)
)
(setq p1 (list (+ (car poin) (* ht 4.0)) (cadr poin))
p2 (list (+ (car p1) (* ht 7)) (cadr p1))
p3 (list (+ (car p2) (* ht 7)) (cadr p1))
p4 (list (+ (car p3) (* ht 6)) (cadr p1))
)
(setq p5 (list (+ (car poin) (* ht 30)) (cadr poin)))
(setvar “osmode” 0)
(command “line” poin p5 “”)
(command “change” (entlast) “” “p” “c” “2” “”)
(command “line” poin pok “”)
(command “change” (entlast) “” “p” “c” “2” “”)
(setq en (entlast))
(command “copy” en “””M” poin p1 p2 p3 p4 p5 “”)
(if (/= bcorg nil) (command “ucs” “p”))
;; (command “zoom” “e”)
(setvar “blipmode” blip)
(setvar “osmode” os)
(command “undo” “e”)
(setvar “cmdecho” cmd)
(setvar “orthomode” orth)
(setvar “highlight” hig)
(setq *error* old)
(princ)
)
;;——-atpotext—————————————
(defun atpotext()
(setq
p1 (list (+ (car poin) (* ht 2.0)) (- (cadr poin) (* ht 1.7)))
p2 (list (+ (car p1) (* ht 8)) (cadr p1))
p3 (list (+ (car p2) (* ht 7)) (cadr p1))
p4 (list (+ (car p3) (* ht 5.5)) (cadr p1))
p5 (list (+ (car poin) (* ht 30)) (cadr poin))
);;setq closed
(command “line” poin p5 “”)
(command “change” (entlast) “” “p” “c” “2” “”)
(setq e3 (cdr (assoc 10 (entget e))))
(setq cx (car e3) cy (cadr e3))
(setq ptx (- cx bcx) pty (- cy bcy)
rad (cdr (assoc 40 (entget e)))
radi (* rad lfa) dia (* radi 2)
)
(setq e3 (list ptx pty))
(setq pt1 (polar e3 (* pi 0.5) (+ rad ht1)))
(setq ptx (* ptx lfa))
(setq pty (* pty lfa))
(setq num (strcat inst (itoa numf)))
(command “text” “m” pt1 ht1 “0” num)
(command “change” (entlast) “” “p” “c” “7” “”)
(command “text” “c” p1 ht “” num)
; (command “text” “r” p2 ht “” (rtos (abs ptx)))
; (command “text” “r” p3 ht “” (rtos (abs pty)))
(command “text” “r” p4 ht “” (rtos dia 2 1))
(setq poin (list (car poin) (- (cadr poin) (* ht 2.125))))
(setq numf (1+ numf))
(command “text” “r” p2 ht “” (rtos ptx))
(command “text” “r” p3 ht “” (rtos pty))
)
정말 대단하세요!!!! 덕분에 조금더 원활한 작업진행을 하게되었습니다 감사합니다^^