明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1702|回复: 5

我从书上抄了个例子,但在autocad上运行不出来~~请教一教

[复制链接]
发表于 2005-5-31 22:03:00 | 显示全部楼层 |阅读模式
.dcl 界面文件 rect:dialog{
label="绘制矩形框"
:row{
spacer;
:image
{
width=30;
heigth=2;
//aspect_radio=0.1;
key="img_rect";
color=-2;
}
:boced_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;
} .lsp主程序文件

(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);
);end if
(dispos);显示幻灯片
(action_tile "accept" "(getdata)(done_dialog 1)")
(action_tile "key_selpos" "(done_dialog 4)")
(action_tile "cancel" "(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);
(print)
) ;初史话
(defun dispos()
(show)
(setq m_x (car pt))
(setq m_y (car 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 (dimx_tile "img_rect"))
(star_image "img_rect");
(slide_image 0 0 x1 y1 "rectangle.sld")
(end_image)
) 我在AutoCAD 中输入 c:drawrect或者drawrect 都运行不出来~~~界面也看不见~~请问怎么回事~~ 我操作错在哪里?
发表于 2005-6-1 00:08:00 | 显示全部楼层
(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) ;
) ;end if
(dispos) ;显示幻灯片
(action_tile "accept" "(getdata)(done_dialog 1)")
(action_tile "key_selpos" "(done_dialog 4)")
(action_tile "cancel" "(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)
(print)
) rect:dialog{label="绘制矩形框";
:row{ spacer;
:image{width=30;height=2;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;
} 自己好好对对吧
发表于 2005-6-1 00:24:00 | 显示全部楼层
我也是菜鸟,看你在这里发个帖子,也就顺便问一句,LISP编程的教程那里能找到,我刚学。。。。。希望有个入门的东西看。谢谢那位大虾有的话可以发我邮箱里 dhgdygbh@163.com
发表于 2005-6-1 00:31:00 | 显示全部楼层
是多么错误?发上来
 楼主| 发表于 2005-6-1 07:29:00 | 显示全部楼层
打得急了,错误不少。接受批评拉


主程序存为DrawRect.lsp                界面存为rect.dcl


加载后输入C:DrawRect,可是没反应阿。界面出不来~~怎么回事?


是不是路径有问题??怎样解决?
发表于 2005-6-1 08:38:00 | 显示全部楼层
建议学会LISP的基本语法再来抄程序,否则在某些地方你不一定看得出来是抄错了...还有另一个帖子我也说了,如果是你写的,你至少不至于不会运行程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 10:37 , Processed in 0.176860 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表