;;lisp_init에 관한 지정
;;————————————
(defun lisp_init ()
;/* System_Variable_Save */
(setq PI 3.14159265358979323846)
(setq cu_osm (getvar “osmode”) ;/* Current Osnap */
cu_oco (getvar “cecolor”) ;/* Current Color */
cu_oli (getvar “celtype”) ;/* Current LineType */
cu_ola (getvar “clayer”) ;/* Current Layer */
cu_oor (getvar “orthomode”) ;/* Current orthomode */
cu_osa (getvar “snapang”) ;/* Current Snap Angle */
cu_ohl (getvar “highlight”) ;/* Current highlight */
cu_osb (getvar “snapbase”) ;/* Current Snap Base */
cu_obi (getvar “blipmode”) ;/* Current blipmode */
cu_pic (getvar “pickbox”) ;/* Current pickbox */
cu_ape (getvar “aperture”) ;/* Current aperture */
cu_pwid (getvar “plinewid”) ;/* Current Pline Width */
cu_sunit (getvar “snapunit”)
cu_dle (getvar “dimdle”)
cu_dli (getvar “dimdli”)
cu_exe (getvar “dimexe”)
cu_exo (getvar “dimexo”)
cu_post (getvar “dimpost”)
cu_scale (getvar “dimscale”)
cu_se1 (getvar “dimse1”)
cu_se2 (getvar “dimse2”)
cu_tad (getvar “dimtad”)
cu_tih (getvar “dimtih”)
cu_tix (getvar “dimtix”)
cu_tofl (getvar “dimtofl”)
cu_toh (getvar “dimtoh”)
cu_tol (getvar “dimtol”)
cu_tsz (getvar “dimtsz”)
cu_txt (getvar “dimtxt”)
)
(setvar “cmdecho” 0)
(setvar “blipmode” 0)
(setvar “osmode” 0)
(setvar “snapunit” ‘(1 1))
(command “undo” “Group”) (princ ” n”)
; Internal error handler defined locally
(defun curr_err (s) ;;; If an error (such as CTRL-C) occurs while this command is active…
; (if (/= s “Function cancelled”) (if (= s “quit / exit abort”) (princ) (print (strcat “n>> Error: ” s))))
(setvar “osmode” cu_osm)
(setvar “cecolor” cu_oco)
(setvar “celtype” cu_oli)
(setvar “clayer” cu_ola)
(setvar “orthomode” cu_oor)
(setvar “snapang” cu_osa)
(setvar “highlight” cu_ohl)
(setvar “snapbase” cu_osb)
(setvar “blipmode” cu_obi)
(setvar “pickbox” cu_pic)
(setvar “aperture” cu_ape)
(setvar “plinewid” cu_pwid)
(setvar “snapunit” cu_sunit)
(setvar “snapunit” cu_sunit)
;(setvar “dimblk1” cu_dblk1)
;(setvar “dimblk2” cu_dblk2)
(setvar “dimdle” cu_dle)
(setvar “dimdli” cu_dli)
(setvar “dimexe” cu_exe)
(setvar “dimexo” cu_exo)
(setvar “dimpost” cu_post)
(setvar “dimscale” cu_scale)
(setvar “dimse1” cu_se1)
(setvar “dimse2” cu_se2)
(setvar “dimtad” cu_tad)
(setvar “dimtih” cu_tih)
(setvar “dimtix” cu_tix)
(setvar “dimtofl” cu_tofl)
(setvar “dimtoh” cu_toh)
(setvar “dimtol” cu_tol)
(setvar “dimtsz” cu_tsz)
(setvar “dimtxt” cu_txt)
(setq *error* ErrSav)
(command “undo” “_en”)
(princ)
)
; Set our new error handler
(setq ErrSav *error* *error* curr_err)
(princ)
)
;;;;lisp_reco에 관한 지정
;;————————————
(defun lisp_reco ()
(setq *error* ErrSav)
(setvar “osmode” cu_osm)
(setvar “cecolor” cu_oco)
(setvar “celtype” cu_oli)
(setvar “clayer” cu_ola)
(setvar “orthomode” cu_oor)
(setvar “snapang” cu_osa)
(setvar “highlight” cu_ohl)
(setvar “snapbase” cu_osb)
(setvar “blipmode” cu_obi)
(setvar “pickbox” cu_pic)
(setvar “aperture” cu_ape)
(setvar “plinewid” cu_pwid)
(setvar “snapunit” cu_sunit)
(setvar “dimdle” cu_dle)
(setvar “dimdli” cu_dli)
(setvar “dimexe” cu_exe)
(setvar “dimexo” cu_exo)
(setvar “dimpost” cu_post)
(setvar “dimscale” cu_scale)
(setvar “dimse1” cu_se1)
(setvar “dimse2” cu_se2)
(setvar “dimtad” cu_tad)
(setvar “dimtih” cu_tih)
(setvar “dimtix” cu_tix)
(setvar “dimtofl” cu_tofl)
(setvar “dimtoh” cu_toh)
(setvar “dimtol” cu_tol)
(setvar “dimtsz” cu_tsz)
(setvar “dimtxt” cu_txt)
(command “undo” “_en”)
(princ)
)
(defun dtr (a) (* 3.14159265358979323846 (/ a 180.0)))
(defun rtd (a) (/ (* a 180.0) 3.14159265358979323846))
(princ)
;;———————————————————————-;;본문 시작
(defun c:cle ( / edges ext1 ent m ename elist esp eep
n bname blist bsp bep int lts)
(graphscr)
(print “CLE – Center Line Extend”)
(lisp_init)
(setvar “osmode” 0)
(setq edges T)
(setq lts (getvar “ltscale”))
(if (not clm_ext) (setq clm_ext (* lts 8.0)))
(setq ext1 (getreal (strcat (msgtable 411 ;|”n>> Extension length “|;) “<" (rtos clm_ext) "> : “)))
(if (not ext1) (setq ext1 clm_ext))
(setq clm_ext ext1)
(if (< clm_ext 0.0)
(progn
(princ (msgtable 392 ;|”n>> Error : Extension length must be positive number.”|;))
(exit)
)
)
(while edges
(princ (msgtable 642 ;|”n>> Press Enter or space bar, then command is cancelled.”|;))
(princ (msgtable 692 ;|”n>> Select boundary edge(s)…”|;))
(setq edges (ssget))
(if edges
(progn
(setq ent T)
(while ent
(princ (msgtable 749 ;|”n>> Select object to extend : “|;))
(setq ent (ssget))
(if ent
(progn
(setq m 0)
(repeat (sslength ent)
(setq ename (ssname ent m))
(setq elist (entget ename))
(if (= (cdr (assoc 0 elist)) “LINE”)
(progn
(setq esp (cdr (assoc 10 elist)))
(setq eep (cdr (assoc 11 elist)))
(setq n 0)
(repeat (sslength edges)
(setq bname (ssname edges n))
(setq blist (entget bname))
(if (= (cdr (assoc 0 blist)) “LINE”)
(progn
(setq bsp (cdr (assoc 10 blist)))
(setq bep (cdr (assoc 11 blist)))
(setq int (inters esp eep bsp bep nil))
(if int
(cex_line esp eep clm_ext elist int)
)
)
) ; end if – edge
(setq n (1+ n))
) ; end repeat – edges
)
) ; end if
(setq m (1+ m))
) ; end repeat – ent
) ; end progn
) ; end if – ent
) ; end while – ent
)
) ; end if – edges
) ; end while – edges
(redraw)
(lisp_reco)
(PRINC)
) ; end cex ()
(defun cex_line ( sp ep ext ent int / dist1 dist2 np)
(if (< (distance int sp) (distance int ep))
(progn
(setq dist1 (distance ep sp))
(setq dist2 (+ (distance ep int) ext))
(if (< dist1 dist2)
(progn
(if (< (distance ep sp) (distance ep int))
(setq ang (angle sp int))
(setq ang (angle int sp))
)
)
(setq ang (angle int sp))
)
(setq np (polar int ang ext))
(setq ent (subst (cons 10 np) (assoc 10 ent) ent))
)
(progn
(setq dist1 (distance sp ep))
(setq dist2 (+ (distance sp int) ext))
(if (< dist1 dist2)
(progn
(if (< (distance sp ep) (distance sp int))
(setq ang (angle ep int))
(setq ang (angle int ep))
)
)
(setq ang (angle int ep))
)
(setq np (polar int ang ext))
(setq ent (subst (cons 11 np) (assoc 11 ent) ent))
)
) ; end if
(entmod ent)
) ; end cex_line ()
(princ ” CLE loaded.”)
(princ)
——————————————————–
———————————————————-
에러도 없고 아무이상없는데 실행이 안되네요
필요한 변수가 하나더 있어야 하는지 알수가 없네요
내용은 기준선 하나를 선택하고 기준선보다 더 연장시킬길이를
입력하면 그 기준선앞으로 입력한길이만큼 라인을 더 뽑아주는건데..
꼭 필요한데…안되네요..ㅠ.ㅠ
검토좀 부탁드립니다. 벌써 일주일째 이거같고 끙끙되네요…ㅠ.ㅠ