xiangjinglai 发表于 2015-3-17 19:11 
试过了还是有问题。。。
Lisp文件应这么写,(Load_dialog "d:\\rect.dcl")这句是带地址的,意思是运行d盘的rect.dcl文件,注意路径,可以自己任意修改
现复制抄送你的LISP文件如下 - (Defun C:DrawRect()
- (setq return_value (load_dialog"d:\\rect.dcl"))
- (setq m_x 0)
- (setq m_y 0)
- (setq pt'(0 0))
- (setq what_next 2)
- (while(>= what_next 2)
- (if (null (new_dialog"rect"return_value))
- (exit)
- )
- (dispos)
- (action_tile"accept" "(getdata)(done_dialog 1)")
- (action_tile"key_selpos" "(done_dialog 4)")
- (action_tile"cancael" "(done_dialog -1)")
- (setq what_next (start_dialog))
- (cond
- ((= what_next 1)
- (FuncDrawRect)
- )
- ((= what_next 4)
- (setq pt(getpoint"\n Getpoint"))
- )
- ((= what_next 0)
- (prompt"\n用户禁用对话:")
- )
- )
- )
- (unload_dialog return_value)
- (princ)
- )
- ;初始化
- (defun dispos()
- (show)
- (setq m_x (car pt))
- (setq m_y (cadr pt))
- (set_tile"key_x"(rtos m_x 2 2))
- (set_tile"key_y"(rtos m_y 2 2))
- )
- ;绘制矩形框
- (defun FuncDrawRect()
- (command"rectang"(list m_x m_y)
- (list (+ m_x m_length) (+ m_y m_width)))
- )
- ;获取数据
- (defun getdata()
- (setq m_x (atof(get_tile "key_x")))
- (setq m_y (atof(get_tile "key_y")))
- (setq m_length (atof(get_tile "key_length")))
- (setq m_width (atof(get_tile "key_width")))
- )
- ;显示幻灯片
- (defun show()
- (setq x1 (dimx_tile "img_rect"))
- (setq y1 (dimy_tile "img_rect"))
- (start_image "img_rect")
- (slide_image 0 0 x1 y1 "rectangle.sld")
- (end_image)
- )
以下是扩展名为dcl的rect文件
运行效果如下图
|