command : weight
; error : AutoCad variable setting rejected ; “dimscale” 1
컴맨드 창에 weight 명령어 실행하면 위에 에러메세지가 뜨네요…
Autocad 2010에서 실핼될수 있게 수정좀 해주세요…
;*****************************************************************************
(defun lexerr (s)
(if (= s “Function cancelled”)
(princ (strcat “nError: ” s))
(progn (restore) (exit))
)
(setq *error* olderr)
(princ)
)
;**********************************************************************
(defun pkarea (pt / a)
(setq olderr *error*
*error* lexerr)
(store ‘(“cmdecho” “clayer” “osmode”))
(setvar “cmdecho” 0)
(command “BPOLY” pt “”)
(setq a (entlast)) (redraw a 3)
(command “area” “e” a)
(entdel a)
(restore)
(redraw)
(setq result (ftoa (getvar “area”)))
)
;**********************************************************************
(defun calculate (x)
(setq th x)
(if (null th) (setq th “0”))
(if result (progn
(set_tile “aresult” result)
(set_tile “th” th)
(setq gravity (cadr (convert (nth (read met) met_dat))))
(if th (progn
(setq stwt (ftoa (/ (* gravity (read th)
(read result)) 1000000)))
(set_tile “wresult” stwt) ))
)
)
)
;**********************************************************************
(defun weight ()
(setq what_next 2)
(if (= 0 (getvar “dimscale”)) (setvar “dimscale” 1))
(if (not ar) (setq ar “1”))
(if (not wt) (setq wt “1”))
(if (not met) (setq met “0”))
(if (not th) (setq th “1”))
(setq dcl_id (load_dialog “weight.dcl”))
(setq met_dat (file_open “metal.dat”)
ts (ftoa (/ (getvar “textsize”) (getvar “dimscale”))) )
(while (> what_next 1)
(if (= 4 what_next)
(progn ;;(setq sel (ssget))
(setq pt (getpoint “nPick area: “))
(pkarea pt) )
)
(if (not (new_dialog “weight” dcl_id)) (exit))
(set_tile “tit” “Weight & Area”)
(set_tile “ar” ar)
(set_tile “wt” wt)
(set_tile “ts” ts)
(set_tile “th” th)
(start_list “met”)
(mapcar ‘add_list met_dat)
(end_list)
(if (/= “” th) (calculate th))
(set_tile “met” met)
(action_tile “pt” “(done_dialog 4)”)
(action_tile “th” “(calculate $value)”)
(action_tile “met” “(setq met $value)”)
(action_tile “ts” “(setq ts $value)”)
(action_tile “wt” “(setq wt $value)”)
(action_tile “ar” “(setq ar $value)”)
(setq what_next (start_dialog))
(if (and (= what_next 1) result) (write_text))
)
(done_dialog dcl_id)
(unload_dialog dcl_id)
(princ)
)
;**********************************************************************
(defun write_text ()
(setvar “textsize” (* (getvar “dimscale”) (read ts)))
(if (= “1” ar)
(progn
(mk_text pt nil “bl” (* (getvar “dimscale”)(read ts)) nil
(strcat “Area = ” result ” mm%%140″) (layer “txt-y”)) ) )
(if (= “1” wt)
(progn
(setq pt_list (textbox (list (cons 1 stwt))))
(setq size (+ (* (getvar “dimscale”) 1.3908)
(- (cadr (nth 1 pt_list)) (cadr (nth 0 pt_list)))) )
(setq pt (list (car pt) (- (cadr pt) size)))
(mk_text pt nil “bl” (* (getvar “dimscale”)(read ts)) nil
(strcat “Weight = ” stwt ” Kg”) (layer “txt-y”)) )
)
)