明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: chenliguo

如何隐藏一个对话框

  [复制链接]
 楼主| 发表于 2004-11-1 16:53:00 | 显示全部楼层
我试试,不过我没有搞清这个段的意思,因为我的帮助文件是E文的,E文有限看不太懂,能解释一下吗?
发表于 2004-11-1 17:01:00 | 显示全部楼层
直接看代码就可以了啊...代码都很简单啊


因为这个还是比较基础的,如果你不弄明白,对你以后的编程都是很大的障碍,而且也不难搞明白,所以我就不把你的程序修改好了...


本站有中文版的帮助文件下载...
 楼主| 发表于 2004-11-1 20:58:00 | 显示全部楼层
不懂才问的嘛,我才学这个东西,谁也不是天生就会的,你一来就会?算了,还是多看书吧,求人不如求己
发表于 2004-11-2 08:19:00 | 显示全部楼层
晕,我为你着想,反而闹得这样? 其实我给你改一下程序远比写上面那么多文字简单得多...
(defun c:ccd()
(setq ccd (load_dialog "dimccd.dcl"))
(setq what_next 2)
(while (> what_next 2)
(if (null (new_dialog "dimccd" ccd))
(exit)
)
(setq sccd "3") ;设初值
;(accd) ;运行一个子程序,取相应值
(mode_tile "accept" 1) ;使确定钮不可用
(action_tile "mccd" "(setq sccd (get_tile \"mccd\")) (accd)");按一个图象钮,取相应值
(action_tile "jccd" "(dccd \"jccd\") (setq ss 1)") ;按加工钮,将值付给ss为下面绘制图形作准备
(action_tile "wccd" "(dccd \"wccd\") (setq ss 2)") ;按加工钮,将值付给ss为下面绘制图形作准备
(action_tile "rccd" "(dccd \"rccd\") (setq ss 3)") ;按加工钮,将值付给ss为下面绘制图形作备
(action_tile "accept" "(setq cd 1) (done_dialog)") ;点确定后关闭对话框
(action_tile "dpoint" "(mode_tile \"accept\" 0) (done_dialog 4) ");按下点取后,确定钮可用,并隐藏对话框取点
(setq what_next (start_dialog))
(cond
((= what_next 4)
(setq lg true)
(while (not lg)
(setvar "osmode" 0)
(setq pp1 (getpoint "\n在要标注粗糙度的轮廓外侧指定一点:"))
(setq lg (setq pp2 (osnap pp1 "nearest"))) ;捕捉距所指点最近的点
)
(setq ag0 (angle pp2 pp1))
)
((= what_next 0)
(prompt "\n用户中止了对话框")
)
)
)
(unload_dialog ccd) (princ)
)
 楼主| 发表于 2004-11-2 11:44:00 | 显示全部楼层
我把您改过的复制加载,结果报告是:用户中止了对话框,也就是说默认what_next 为0,程序不再运行,不知道哪里出错了?
发表于 2004-11-2 11:56:00 | 显示全部楼层
我开始就将what_next设为2了,怎么会默认为0?


你没有将对话框文件及子函数贴出来,我无法调试...但这个结构就是这样了...还是希望你能把帮助文件中那几行代码看明白了,其实是很容易的东西,,,既然要学习,还是得勤动脑筋,不要什么的指望着别人
 楼主| 发表于 2004-11-2 12:09:00 | 显示全部楼层
好吧,我将所有代码最简化了,最后只返回一个nil,我再仔细研究看看,谢谢你了
 楼主| 发表于 2004-11-2 13:32:00 | 显示全部楼层
我试过,只要取消while循环,对话框就能够出现工作,只是不能隐藏回弹,一加循环就给一个nil,因为这时我还没有调用任何子程序,对话框都不能加载,不知道是为什么,我仔细对照了例程,没有发现不对地方,我最简化到如下程序,仍是不行。 (defun c:ccd()
(setq ccd (load_dialog "dimccd.dcl"))
(setq what_next 2)
(while (> what_next 2)
(if (null (new_dialog "dimccd" ccd))
(exit)
) (action_tile "accept" "(setq cd 1) (done_dialog)")
(action_tile "dpoint" "(mode_tile \"accept\" 0) (done_dialog 4)") (setq what_next (start_dialog))
(cond
((= what_next 4) (setq pp1 (getpoint "\n在要标注粗糙度的轮廓外侧指定一点:"))) ((= what_next 0)
(prompt "\n用户中止了对话框")
) ) (unload_dialog ccd) )
发表于 2004-11-2 14:09:00 | 显示全部楼层
因为我没法调试你的程序,所以就给你简单改了一下,至于这里出现了一点点错误我也没有发现


是(while (>= what_next 2)...


这点错误只要你跟帮助文件中的例子稍微对比一下就能看出来了,所以我一直建议你要弄懂,否则象这个的简单错误你也找不出来,导致一个极小的问题却浪费你大量的时间
发表于 2004-11-2 14:34:00 | 显示全部楼层

兄弟的基本功有待加强啊

兄弟的基本功有待加强啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-30 06:27 , Processed in 0.173560 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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