程序有问题 我是按书打的 但是不知道为什么错误
有没有大神能帮忙看下(Defun C:DrawRect()
(setq return_value (load_dialog"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 : dialog{
label = "绘制矩形图";
:row{
:image
{
width=30;
heigth=2;
//aspect_ratio=0.1;
key="img_rect";
color=-2;
}
:boxed_column{
label="参数";
:row{
:column{
:edit_box
{
label="起始位置X坐标: ";
key="key_x";
width=8;
value="0";
}
:edit_box
{
label="起始位置Y坐标: ";
key="key_y";
width=8;
value="0";
}
:button
{
label="选择屏幕坐标: ";
key="key_selpos";
}
}
}
:edit_box
{
label="长度:";
key="key_length";
width=8;
value="0";
}
:edit_box
{
label="宽度:";
key="key_width";
width=8;
value="0";
}
}
}
ok_cancel;
}
你程序的开头就告诉你了
(setq return_value (load_dialog"rect.dcl"))
把你的后面的/*DCL文件/另存为 rect.dcl。OK? newbuser 发表于 2015-3-17 18:33 static/image/common/back.gif
你程序的开头就告诉你了
(setq return_value (load_dialog"rect.dcl"))
把你的后面的/*DCL文件/另存为 re ...
名字也要这样? 而不是说改下文件类型? newbuser 发表于 2015-3-17 18:33 static/image/common/back.gif
你程序的开头就告诉你了
(setq return_value (load_dialog"rect.dcl"))
把你的后面的/*DCL文件/另存为 re ...
试过了还是有问题。。。 xiangjinglai 发表于 2015-3-17 19:11 static/image/common/back.gif
试过了还是有问题。。。
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文件
运行效果如下图
newbuser 发表于 2015-3-18 09:22 static/image/common/back.gif
Lisp文件应这么写,(Load_dialog "d:\\rect.dcl")这句是带地址的,意思是运行d盘的rect.dcl文件,注意路径 ...
恩啦 ,,谢谢
还有个问题就是img_rect要怎么修改才能显示出来 或者说加载我自己的图片 xiangjinglai 发表于 2015-3-18 09:35 static/image/common/back.gif
恩啦 ,,谢谢
还有个问题就是img_rect要怎么修改才能显示出来 或者说加载我自己的图片
这个需要制作幻灯片,调用SLD文件。我没做过,不懂这个领域的。关于dcl我也是一知半解的,没有太多的经验。请谅解。 newbuser 发表于 2015-3-18 10:06
这个需要制作幻灯片,调用SLD文件。我没做过,不懂这个领域的。关于dcl我也是一知半解的,没有太多的经验 ...
还是很感谢你 。。只能用SLD这个办法吗
页:
[1]