福建师大附中 发表于 2015-12-28 23:06:05

菜鸟来求助一个autolisp问题

(defun c:dia5d()
(setvar "cmdecho" 0)
(sub_dia5d)
(if ss (dcl_dia5d))
(prin1)
)
(defun sub_dia5d()
(setq ss(ssget))
(if (null ss)(setq ss(ssadd)))
(setq cir_num 0 line_num 0 text_num 0)
(setq n 0)
(repeat (sslength ss)
    (setq en (ssname ss n))
    (setq entype (cdr (assoc 0 (entget en))))
    (cond ((= entype "circle") (setq cir_num (1+ cir_num)))
    ((= entype "line") (setq line_num (1+ line_num)))
    ((= entype "text") (setq text_num (1+ text_num)))
    )
    (setq n (1+ n))
    ))
(defun dcl_dia5d()
(setq dcl_id (load_dialog "f://VP//dia5d.dcl"))
(if (not (new_dialog "dia5d" dcl_id))(exit))
(set_tile "t_cir" (itoa cir_num))
(set_tile "t_line" (itoa line_num))
(set_tile "t_text" (itoa text_num))
(setq dd (start_dialog))
)
dia5d:dialog{
label="对话框text文字实例测试";
:concatenation{
    :text_part{label="共选到【";}
    :text{width=6;
          key="t_cir";}
    :text_part{label="】个circel";}
    }
:concatenation{
    :text_part{label="共选到【";}
    :text{width=6;
          key="t_line";}
    :text_part{label="】个line";}
    }
:concatenation{
    :text_part{label="共选到【";}
    :text{width=6;
          key="t_text";}
    :text_part{label="】个text";}
    }
ok_cancel;
}


执行后提示错误: quit / exit abort

xiaolong1487 发表于 2015-12-28 23:46:59

(setq dcl_id (load_dialog "f://VP//dia5d.dcl"))这一句要改一下,DCL位置
(cond ((= entype "circle") (setq cir_num (1+ cir_num)))
    ((= entype "line") (setq line_num (1+ line_num)))
    ((= entype "text") (setq text_num (1+ text_num)))
    )
"circle""line""text" 可能要大写

ZZXXQQ 发表于 2015-12-29 08:19:11

用了(exit)函数就有这种提示。(defun c:dia5d()
(setvar "cmdecho" 0)
(sub_dia5d)
(if ss (dcl_dia5d))
(prin1)
)
(defun sub_dia5d()
(setq ss(ssget))
(if (null ss)(setq ss(ssadd)))
(setq cir_num 0 line_num 0 text_num 0)
(setq n 0)
(repeat (sslength ss)
    (setq en (ssname ss n))
    (setq entype (cdr (assoc 0 (entget en))))
    (cond
       ((= entype "CIRCLE") (setq cir_num (1+ cir_num)))
   ((= entype "LINE") (setq line_num (1+ line_num)))
   ((= entype "TXT") (setq text_num (1+ text_num)))
    )
    (setq n (1+ n))
)
)
(defun dcl_dia5d()
(if (> (setq dcl_id (load_dialog "f://VP//dia5d.dcl")) 0) (progn
   (if (new_dialog "dia5d" dcl_id) (progn
    (set_tile "t_cir" (itoa cir_num))
    (set_tile "t_line" (itoa line_num))
    (set_tile "t_text" (itoa text_num))
    (setq dd (start_dialog))
   )
    (princ "\n无法显示对话框!")
   )
   (unload_dialog dcl_id)
)
   (princ "\n无法加载对话框!")
)
)
页: [1]
查看完整版本: 菜鸟来求助一个autolisp问题