qcw911 发表于 2010-12-7 11:30:00

关于新建图层的问题(新手问题)


下面程序为什么只能执行一次呢
新建图层后就不能执行命令了
为什么呢?
高手指点

(defun c:hf()
(setvar "clayer" "TOS_S3")
(dcl_hf)
(reset)
(prin1)
)
(defun dcl_hf()
(setq dcl_id (load_dialog "C:\\lisp\\050\\hf.dcl"))
(new_dialog "hf" dcl_id)

(def_hf)
(mode_tile "krad" 2)
(action_tile "kimage" "(setq ddd 1)")
(action_tile "accept" "(ok_hf)(done_dialog 1)")
(setq ddd (start_dialog))
(if (= ddd 1)
         
          (draw)
    )
)
(defun ok_hf()
(setq rad (atof(get_tile"krad")))
)

(defun def_hf()
   (set_tile "krad" "1.5")
   
   (show_sld"kimage" "C:\\lisp\\050\\kimage.sld")
)
(defun show_sld(key sld)
   (setq x (dimx_tile key))
   (setq y (dimy_tile key))
   (start_image key)
   (fill_image 0 0 x y -2)
   (slide_image 0 0 x y sld)
   (end_image)
)
(defun draw()

(chkTOS_S3)
(setq pts (getpoint"\n pt1:"))
(setq pte (getpoint pts"\n pt2:"))
(ini)
(setq ang (angle pts pte))
(setq pt2 (polar pts (+ ang 0) (* rad 2)))
(setq pt1 (polar pts (+ ang (/ pi 4)) (* rad (sqrt 2))))
(setq dd (distance pts pte))
(setqnn (fix (/ dd rad)))
   (command "_arc" pts pt1 pt2)
    (setq en1 (entlast))
    (setq pt3 (polar pts (+ ang 0) rad))
    (setq pt4 (polar pt2 (+ ang 0) rad))
    (setq pt5 (polar pt1 (+ ang 0) rad))
    (repeat(- nn 2)
       (command "_arc" pt3 pt5 pt4)
       (setq en2 (entlast))
       (command "_TRIM" en1"" (list en2 pt3 ) "")
       (setqen1 en2)
       (setq pt3 (polar pt3 (+ ang 0) rad))
       (setq pt4 (polar pt4 (+ ang 0) rad))
       (setq pt5 (polar pt5 (+ ang 0) rad))
    )
)
(defun ini()
(setvar "cmdecho" 0)
(command "undo" "be")
(setq oldos (getvar "osmode")
olderror *error*
)
(setvar "osmode" 0)
(setq *error* interror)
)
(defun reset()
(setvar "osmode" oldos)
(setq *error* olderror)
      (princ)
      (command "undo" "e")
(setvar "cmdecho" 1)
      (princ)
)
(defun chkTOS_S3 ()
      (setq chkTOS_S3 (tblsearch "layer" "TOS_S3"))
      (if (=chkTOS_S3 nil)
(PROGN
(alert "TOS_S3")
         (command "_layer" "N" "TOS_S3" "c""21""TOS_S3" "")
   )
      )
   (setvar "clayer" "TOS_S3")
   
)



Gu_xl 发表于 2010-12-7 13:02:59

函数名 chkTOS_S3和变量名chkTOS_S3 一样了,执行代码(setq chkTOS_S3 (tblsearch "layer" "TOS_S3"))
后 函数就失效啦!请将变量名改个名字!
页: [1]
查看完整版本: 关于新建图层的问题(新手问题)