明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1546|回复: 4

如何调试此程序?小妹谢谢了

[复制链接]
发表于 2006-5-31 11:15 | 显示全部楼层 |阅读模式

主程序

(dufun c:load_fl(/dcl_id jx y nl n R r d a al rj)

(setq del_id(load_dialog"c_fl.dcl"))

(if(not(new_dialog"c_fl"dcl_id))

(exit)

)

(action_tile"begin""(data_manage)")

(start_dialog)

(unload_dialog dcl_id)

(princ)

(if(<rd rx)

(prompt"\n内圆半径大于外圆半径")

((if(<rd rj)

(prompt"\n节圆半径大于外圆半径" )

((if(>rd rj)

(prompt"\n节圆半径小于外圆半径 )

((if(or(>(*0.5d)(-rd rj))(>(*0.5 d)(-rj rx)))

(prompt"\n螺栓孔太大)

(drawl)

)

)

)

)

)

)

)

)

(dufun data_manage()

(set x(atof(get_tile"cpx")))

(set y(atof(get_tile"cpy")))

(setq cp(list x y))

(setq rd(atof(get_tile"wb")))

(setq rx(atof(get_tile"nb")))

(setq rj(atof(get_tile"jb")))

(setq d(atof(get_tile"kz")))

(setq nl(atof(get_tile"ksh")))

(setq n(float nl))

(setq al(atof(get_tile"angle")))

(setq a(*pi(/al 180)))

(setq pt(polar cp a rj))

(dufun drawl()

(command"circle"cp rd)

(command"circle"cp rx)

(command"circle"pt"D"d)

(command"array""I"""p"cp nl""y")

(command"layer""m"l"c"l"""")

(command"circle"cp rj)

(command"layer""m"0"on""""")

)

对话框

c_fl:dialog{

label=

"法兰正视图绘制器"           ;

:text{

label=

"先输入数据,然后单击开始"        ;

}

:boxed_row{

label=

"输入法兰中心点"         ;

:edit_box{

label=

"X轴坐标"               ;

key=

"cpx"                   ;

fixed_width=true         ;

width=5                 ;

alignment=centered           ;

}

:edit_box{

label=

"Y轴坐标"               ;

key=

"cpy"                   ;

fixed_width=true         ;

width=5                 ;

alignment=centered           ;

}

}

:boxed_row{

label=

"轮廓尺寸参数"               ;

:edit_box{

label=

"法兰外圆半径"               ;

key=

"wb"                    ;

edit_limit=20                ;

edit_width=5                ;

}

:edit_box{

label=

"法兰内圆半径"               ;

key=

"nb"                    ;

edit_limit=20                ;

edit_width=5                ;

}

:edit_box{

label=

"法兰节圆半径"               ;

key=

"jb"                    ;

edit_limit=20                ;

edit_width=5                ;

}

}

:boxed_row{

label=

"圆孔参数"              ;

:edit_box{

label=

"圆孔直径"              ;

key=

"kz"                    ;

edit_limit=20                ;

edit_width=5                ;

}

:edit_box{

label=

"圆孔数量"              ;

key=

"ksh"                   ;

edit_limit=20                ;

edit_width=5                ;

}

:edit_box{

label=

"第一个圆孔的起始角度"           ;

key=

"angle"                 ;

edit_limit=20                ;

edit_width=5                ;

}

}

:boxed_row{

:button{

label=

"开始"                  ;

key=

"bigin"                 ;

fixed_width=true         ;

width=5                 ;

}

ok_only                 ;

}

}

 

发表于 2006-5-31 11:57 | 显示全部楼层
jiaobinhon发表于2006-5-31 11:15:00回复:(jiaobinhon)如何调试此程序?小妹谢谢了

如何调试也算开发的程序问题吗?

顺便说一下,你的程序你用了没有?(done_dialog)都没有,程序会退不出来的,连cad都会关不掉的.空格也要注意,,,,,,,,,都习惯用记事本来输入?

(action_tile "begin" "(data_manage)(done_dialog) ")

((if(<rd rj)

(prompt"\n节圆半径大于外圆半径" )

((if(>rd rj)

(prompt"\n节圆半径小于外圆半径 )

这两句什么意思?我不懂得法兰是什么,不过,,,你这样好象只有节圆等于外圆才不提示...

这样也可以?

打开cad,输入命令vlisp,这个里面就可以调试,,,,,,,,,

 

发表于 2006-6-1 08:38 | 显示全部楼层
(    dufun c:load_fl(/dcl_id jx y nl n R r d a al rj)

   (setq dcl_id (load_dialog"c_fl.dcl"))

   (if(not(new_dialog"c_fl"dcl_id)) (exit))

   (action_tile"begin""(data_manage)")

   (start_dialog)

   (unload_dialog dcl_id)

   (princ)

   (if(<rd rx)  (prompt"\n内圆半径大于外圆半径")

   ((if(<rd rj)

   (prompt"\n节圆半径大于外圆半径" )

((if(>rd rj)

(prompt"\n节圆半径小于外圆半径 )

((if(or(>(*0.5d)(-rd rj))(>(*0.5 d)(-rj rx)))

(prompt"\n螺栓孔太大)

(drawl)

)

)

)

)

)

)

)

)

(dufun data_manage()

(set x(atof(get_tile"cpx")))

(set y(atof(get_tile"cpy")))

(setq cp(list x y))

(setq rd(atof(get_tile"wb")))

(setq rx(atof(get_tile"nb")))

(setq rj(atof(get_tile"jb")))

(setq d(atof(get_tile"kz")))

(setq nl(atof(get_tile"ksh")))

(setq n(float nl))

(setq al(atof(get_tile"angle")))

(setq a(*pi(/al 180)))

(setq pt(polar cp a rj))

(dufun drawl()

(command"circle"cp rd)

(command"circle"cp rx)

(command"circle"pt"D"d)

(command"array""I"""p"cp nl""y")

(command"layer""m"l"c"l"""")

(command"circle"cp rj)

(command"layer""m"0"on""""")

)

 

1.书写格式注意要用缩排方式,以便检查括号的前后匹配.

2.对话框回调函数中至少有一个要包含(done_dialog)函数,以便结束对话框.

3.对话框活动其间不能进行与屏幕的互交式输入输出(即无论在主函数还是回调函都不能出现输入输出语句)

 

 

发表于 2006-6-1 13:26 | 显示全部楼层

在哪抄的程序?程序中错误百出。

1、函数名称错误,DEFUN写成了DUFUN;

2、书写错误,*写成了*pi;*写成了*0.5;/写成了/al……;

3、子命令错误,"L"写成了"I";

4、引号错误;

更改后的程序:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2007-1-17 00:34 | 显示全部楼层
程序不能退出。晕
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 20:45 , Processed in 0.530394 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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