리습 전문입니다.
FILLET.LSP Loaded. Start Command with FRerror: bad argument type: consp nil라는 에러가 뜹니다.. ㅜㅜ 문법오류를 찾아야하는데 도저히못찾겠네요 ..ㅜㅜㅜ
이 리습 아래쪽에 있는 리습은 실행이 되지 않습니다.
;旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴?
;? FILE : FILLET.LSP AutoLISP : SOHN JONG-SUP ?
;읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴?
(defun c:DT()
(command “chamfer” “d” “10” “10”)
(setvar “cmdecho” 0)(graphscr)
(setq rad (rtos (getvar “chamfera”)))
(setq pt1 (entsel “n Select first object: ” )
ent1 (car pt1))
(redraw ent1 3)
(setq pt2 (entsel “n Select second object: “)
ent2 (car pt2))
(redraw ent2 3)
(setq pt3 (cdr pt1)
pt4 (cdr pt2))
(setq ent3 (entget (car pt1))
ent4 (entget (car pt2))
rad (getreal (strcat “n Enter fillet radius: <“rad”>: “)))
(command “CHAMFER” “D” rad rad “CHAMFER” pt1 pt2)
; (entdel ent1)
(entdel ent2)
; (entmake ent3)
(entmake ent4)
(princ)
)
(PROMPT “ntHYUNDAI CAD/CAM DESIGN INSTITUTE. PHONE:(0551)96-6013, 81-6474”)
(prompt “ntFILLET.LSP Loaded. Start Command with FR”)(princ)
(setvar “UCSFOLLOW” (nth 4 oldvar))
(setvar “UCSICON” (nth 3 oldvar))
(setvar “BLIPMODE” (nth 2 oldvar))
(setvar “CMDECHO” (car oldvar))
(setq *error* olderr)
(princ)
)
(defun dxf (a e) (cdr (assoc a e)))
(defun get_input (prmpt kwrd / inp)
(while (not inp)
(initget (strcat “Radius ” kwrd))
(setq inp
(entsel
(strcat
“nRadius (“
(rtos (getvar “FILLETRAD”))
“)/”
prmpt
“: “
)
)
)
(cond
( (= inp “Radius”)
(if
(setq inp
(getreal
(strcat
“Enter fillet radius <“
(rtos (getvar “FILLETRAD”))
“>: “
)
)
)
(setvar “FILLETRAD” inp)
)
(setq inp nil)
)
( inp
(if (listp inp) (setq inp (nentselp (cadr inp))))
)
( T
(setq inp 0)
)
)
)
(if (not (numberp inp)) inp)
)
(defun is_valid (elist vert / etype)
(setq etype (dxf 0 elist))
(not
(cond
( (= etype “VERTEX”)
(cond
( (and vert (listp vert))
(cond
( (not (zerop (dxf 42 elist)))
(princ “nCannot fillet polyline arc segments!”)
)
( (not (member (dxf -1 elist) vert))
(princ
(strcat
“nLines belonging to polylines must be consecutive”
” or separated by one segment!”
)
)
)
)
)
( vert
(princ
(strcat “nCannot fillet polyline segments”
” with non-polyline segments!”
)
)
)
( T
(cond
( (>= (dxf 70 elist) 128)
(princ “n3D Polyface Mesh entities may not be filleted!”)
)
( (>= (dxf 70 elist) 64)
(princ “n3D Polygon Mesh entities may not be filleted!”)
)
( (>= (dxf 70 elist) 32)
(princ “n3D Polyline entities may not be filleted!”)
)
( (not (zerop (dxf 42 elist)))
(princ “nCannot fillet polyline arc segments!”)
)
)
)
)
)
( (member etype ‘(“LINE” “ARC” “CIRCLE”))
(if (and vert (listp vert))
(princ
(strcat “nCannot fillet polyline segments”
” with non-polyline segments!”
)
)
)
)
( T
(princ
(strcat “nFillet requires lines, arcs, circles”
“, or straight polyline segments!”
)
)
)
)
)
)
(defun findparent (ent / edata)
(while
(and
(setq ent (entnext ent))
(/= (dxf 0 (setq edata (entget ent))) “SEQEND”)
)
)
(if ent (cdr (assoc -2 edata)))
)
(defun equalf (real1 real2)
(equal real1 real2 0.0000000001)
)
(defun zerof (realnum)
(equal realnum 0 0.0000000001)
)
; ***********************************************
; *************** Main Program ****************
; ***********************************************
(setq T (not nil))
(setq oldvar
(list
(getvar “CMDECHO”)
(getvar “UNDOCTL”)
(getvar “BLIPMODE”)
(getvar “UCSICON”)
(getvar “UCSFOLLOW”)
)
)
(setvar “CMDECHO” 0)
(setvar “BLIPMODE” 0)
(setq restore filletx
olderr *error*
*error* errexit
)
(while (and (not inp) (setq inp (get_input “<Select first object>” “”)))
(and
(if (not (is_valid (setq ent1 (entget (car inp))) nil))
(setq inp nil)
T
)
(if (> (length inp) 2)
(progn
(initget “Yes No”)
(if
(= “Yes”
(getkword
(strcat
“nYou selected an entity in a block!”
“n Do you want to explode the block? (Yes/<No>): “
)
)
)
(progn
(while (> (length inp) 2)
(command “._EXPLODE” (last (last inp)))
(setq inp (nentselp (cadr inp)))
)
(setq ent1 (entget (car inp)))
)
)
)
T
)
(progn
(redraw (car inp) 3)
(cond
( (= (dxf 0 ent1) “VERTEX”)
(setq p1 (cadr inp)
tmp1 (findparent (dxf -1 ent1))
tmp2 tmp1
)
(while (/= (dxf 0 (entget (setq tmp1 (entnext tmp1)))) “SEQEND”)
(setq vertlist (cons tmp1 vertlist))
)
(setq vertlist
(list
(cadr (member (dxf -1 ent1) vertlist))
(caddr (member (dxf -1 ent1) vertlist))
(cadr (member (dxf -1 ent1) (reverse vertlist)))
(caddr (member (dxf -1 ent1) (reverse vertlist)))
)
)
(setq inp nil)
(while (not inp)
(setq inp
(get_input
“Undo/Select second segment(<CR>=entire polyline)”
“Undo”
)
)
(cond
( (= inp “Undo”)
(redraw (dxf -1 ent1) 4)
)
( (null inp)
(redraw (dxf -1 ent1) 4)
(setvar “UCSICON” 0)
(command
“._UCS”
“_E”
tmp2
“._FILLET”
“_P”
)
(setvar “CMDECHO” 1)
(command tmp2)
(setvar “CMDECHO” 0)
(command
“._UCS”
“_P”
)
(setvar “UCSICON” (nth 3 oldvar))
(setq inp T)
)
( T
(if (is_valid (setq ent2 (entget (car inp))) vertlist)
(progn
(redraw (dxf -1 ent1) 4)
(setvar “UCSICON” 0)
(setq p1 (trans p1 1 0)
p2 (trans (cadr inp) 1 0)
)
(command
“._UCS”
“_E”
tmp2
“._FILLET”
(trans p1 0 1)
(trans p2 0 1)
“._UCS”
“_P”
)
(setvar “UCSICON” (nth 3 oldvar))
)
(setq inp nil)
)
)
)
)
(if (= inp “Undo”) (setq inp nil))
)
( T
(setq ent1 (list (dxf 0 ent1) (car inp) (trans (cadr inp) 1 0))
inp nil
)
(while (not inp)
(setq inp (get_input “Undo/Select second object” “Undo”))
(cond
( (= inp “Undo”)
(redraw (cadr ent1) 4)
)
( (null inp)
(setq inp 1)
(redraw (cadr ent1) 4)
)
( (is_valid (setq ent2 (entget (car inp))) T)
(setq ent2 (dxf 0 ent2))
(cond
( (= (car ent1) ent2 “LINE”)
(if
(inters
(dxf 10 (entget (cadr ent1)))
(dxf 11 (entget (cadr ent1)))
(dxf 10 (entget (car inp)))
(dxf 11 (entget (car inp)))
nil
)
(progn
(setq ent2
(cons
ent2
(list (car inp) (trans (cadr inp) 1 0))
)
)
(setq tmp1 (entget (cadr ent1))
tmp2 (entget (cadr ent2))
)
(if
(and
(equalf
(caddr (trans (dxf 10 tmp1) 0 1))
(caddr (trans (dxf 11 tmp1) 0 1))
)
(equalf
(caddr (trans (dxf 11 tmp1) 0 1))
(caddr (trans (dxf 10 tmp2) 0 1))
)
(equalf
(caddr (trans (dxf 10 tmp2) 0 1))
(caddr (trans (dxf 11 tmp2) 0 1))
)
)
(command
“._FILLET”
(trans (caddr ent1) 0 1)
(trans (caddr ent2) 0 1)
)
(progn
(setvar “UCSICON” 0)
(command
“._UCS”
“_3”
(trans (dxf 10 tmp1) 0 1)
(trans (dxf 11 tmp1) 0 1)
(trans
(if
(or
(equalf
(dxf 10 tmp2)
(dxf 10 tmp1)
)
(equalf
(dxf 10 tmp2)
(dxf 11 tmp1)
)
)
(dxf 11 tmp2)
(dxf 10 tmp2)
)
0
1
)
“._FILLET”
(trans (caddr ent1) 0 1)
(trans (caddr ent2) 0 1)
“._UCS”
“_P”
)
(setvar “UCSICON” (nth 3 oldvar))
)
)
)
(prompt “nEntities are not co-planar!”)
)
)
( (or (setq tmp1 (= (car ent1) “LINE”)) (= ent2 “LINE”))
(setq ent2
(cons ent2 (list (car inp) (trans (cadr inp) 1 0)))
)
(setvar “UCSICON” 0)
(command
“._UCS”
“_E”
(if tmp1 (cadr ent2) (cadr ent1))
)
(if
(and
(zerof
(last
(trans
(dxf 10
(entget (cadr (if tmp1 ent1 ent2)))
)
0
1
)
)
)
(zerof
(last
(trans
(dxf 11
(entget (cadr (if tmp1 ent1 ent2)))
)
0
1
)
)
)
)
(command
“._FILLET”
(trans (caddr ent1) 0 1)
(trans (caddr ent2) 0 1)
)
(prompt “nEntities are not co-planar!”)
)
(command
“._UCS”
“_P”
)
(setvar “UCSICON” (nth 3 oldvar))
)
( (equal
(dxf 210 (entget (cadr ent1)))
(dxf 210 (entget (car inp)))
)
(setvar “UCSICON” 0)
(command
“._UCS”
“_E”
(cadr ent1)
“._FILLET”
(trans (caddr ent1) 0 1)
(trans (cadr inp) 0 1)
“._UCS”
“_P”
)
(setvar “UCSICON” (nth 3 oldvar))
)
( T (prompt “nEntities are not co-planar!”))
)
(if inp (redraw (cadr ent1) 4))
)
( T (setq inp nil))
)
)
(setq inp (if (= inp “Undo”) nil 1))
)
)
)
)
)
(restore)
)
죄송하지만 어디가 수정된지 알수 있을까요 ?? ㅜㅜㅜ 같은파일 한개가 더있어서요 ㅜㅜ 챔퍼 5짜리와 10짜리 두가지거든요 ㅠㅠㅠ