明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 李义东

对话框问题,不知问题出在何处?

  [复制链接]
 楼主| 发表于 2004-6-25 14:18:00 | 显示全部楼层
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;以下为快速创建图层LISP;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:cjtc ()
(setq dcl_file "cjtc" ; 指定DCL档案的名称
dcl_name "cjtc"
) ; 指定对话框的名称 (setq dcl_flag (load_dialog dcl_file)) ; 载入DCL档案
(if (< dcl_flag 0)
(exit)
) ; 判断DCL档案是否已载入? (if (not (new_dialog dcl_name dcl_flag))
(exit)
) ; 显现对话框画面
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(action_tile
"addlay_j"
"(setq dnum (get_tile \"dnum_c\"))
(setq numy (get_tile \"num_c\"))(DONE_DIALOG 1)"
) (action_tile "pglay" "(DONE_DIALOG 10)");;新加部分



(IF (= (start_dialog) 1) ; 令对话框开始接受使用者输入资料
(cjtc-1 dnum numy)
) (IF (= (start_dialog) 10) ; 新加部分
(pglqy_1)
)

(unload_dialog dcl_flag)
(princ)
) ; 释放DCL档案
(defun pglqy_1 ()
(unload_dialog dcl_flag)
(princ)
(command "purge" "la" "*" "n")) ;新加部分

; 函式DCL_CONC至此结束
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun cjtc-1 (dnum numy)
(setq index1 0)
(setvar "cmdecho" 0)
(setq num (atoi numy))
(setq index 1.0) ;付值index=1
(repeat 9
(if (> num (- index 1)) ;此函数可判别每一个 expr 并重复执行 number 所叙述的次数, 然后返回最后一个表达式的值。 ;其中 int 将代表任何的正整型数。
;如果拆图量大于0则继续执行
(progn (setq lay (strcat dnum "-00" (rtos index 2 0)))
;strcat连接后面的字符串,(rtos index 2 0)返回10进制,连接为图名
(setq index (1+ index)) ;图名每次加1
(autop)
)
)
) ;以上为将输入的值转化为图号
(if (> num 9)
(repeat 90
(if (> num (- index 1))
(progn (setq lay (strcat dnum "-0" (rtos index 2 0))) (setq index (1+ index))
(autop)
)
)
)
)
(if (> num 99)
(repeat 900
(if (> num (- index 1))
(progn (setq lay (strcat dnum "-" (rtos index 2 0)))
(setq index (1+ index))
(autop)
)
)
)
)
(redraw)
(princ)
)
;-----------------------------------------
(defun autop (/ pt sera ch ly ents)
(setq index1 (+ 1 index1))
(setq layecol '(191 50 90 130 170 210 30 82 150 10 161))
(setq layec (nth index1 layecol))
(if (= layec nil)
(progn
(setq index1 1)
(setq layec 7)
)
)
(command "-layer" "Make" lay "Color" layec "" "") ) ;---------------------------------------
 楼主| 发表于 2004-6-25 14:20:00 | 显示全部楼层
cjtc: dialog {
label = "图层创建快捷框

:boxed_column{
label="批量创建图层";
:row{
:edit32_box{label="专案代号";key="dnum_c";edit_width=15;} //dnum专案代号
}
:row{
:edit32_box{label="输入创建层数量";key="num_c";edit_width=15;} //num创建层数量
}
:row{
: button {label = "开始批量创建图层";key = "addlay_j";width = 10;} //ALLPART创建图层指令
}
} : button {label = "◎清除未使用层◎";key = "pglay";width = 10;} : button { label = "&Cancel"; key = "cancel"; is_default = true; fixed_width = true; alignment = right;}
}
 楼主| 发表于 2004-6-25 14:22:00 | 显示全部楼层
执行第二个按钮"清除未使用层"无效


请帮忙看看!
发表于 2004-6-25 15:00:00 | 显示全部楼层
退出对话框是done_dialog,unload_dialog只是释放DCL文档
 楼主| 发表于 2004-6-25 15:18:00 | 显示全部楼层
还是不知道要如何处理?
 楼主| 发表于 2004-6-25 15:23:00 | 显示全部楼层
第一个按钮也是这样做的呀!
发表于 2004-6-25 16:34:00 | 显示全部楼层
发现问题了,你对对话框的调用过程还不熟悉。。。


start_dialog是显示对话框,你看你的程序,两次调用 start_dialog,就是你要两次显示对话框,而且你第一次显示判断是否是1,并没有判断是否是10,是否是10是第二次才判断,所以第一次调用(start_dialog)对10并不起作用,


你必须将start_dialog返回的值保存在一个变量里,然后进行多次判断,而不能在多次判断里直接调用start_dialog


建议你找几个标准简单的对话框例子,再看看资料中的介绍,把这个对话框的调用过程理清楚了
 楼主| 发表于 2004-6-25 17:21:00 | 显示全部楼层
有那位大侠再帮忙看一下呀?
发表于 2004-6-25 17:50:00 | 显示全部楼层
????????
 楼主| 发表于 2004-6-26 14:10:00 | 显示全部楼层
试了一天还是没有试出来,请大侠帮助改一下;贴个样例程式参考一下也可以.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 12:31 , Processed in 0.183749 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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