明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1717|回复: 2

lisp程序如何从对话框读取popup_list的数据?

[复制链接]
发表于 2007-5-25 13:39 | 显示全部楼层 |阅读模式

  不知怎么回事,lisp程序老是读不上对话框里,下拉式列表框里的数据!!!!

   请知道的大哥们一定要帮帮忙!!!!

 

              dcl程序

 clcs:dialog{
  label="齿轮参数化设计";
    :boxed_column{
  label="设计参数选择";
  :popup_list{
  label="齿数比u=";
  key=pop1;
  edit_width=10;
  value=2;
  list="3\n3.1\n3.2\n3.3\n3.4\n3.5\n3.6\n3.7\n3.8\n3.9\n4";
  }
  :popup_list{
  label="初选小齿轮齿数z1=";
  key=pop2;
  edit_width=10;
  value=6;
  list="18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30";
  }
  }
  ok_only;
  }

               lisp程序

 (defun c:clcs ()
  (setq osmode(getvar"osmode")
       cmdecho (getvar"cmdecho")
       blipmode(getvar"blipmode"));;将一些系统变量存储起来,以备图形绘出后恢复
 (setvar"osmode" 0)
 (setvar "blipmode" 0)
 (setvar "CMDECHO" 0);;设定一些需要的系统变量
 (vl-load-com)
(setq dcl_id (load_dialog "c:/clcs.dcl"))
  (new_dialog "clcs" dcl_id)
 
 
 
 (action_tile "accept" "(getdata)(done_dialog)")
 (start_dialog) (unload_dialog dcl_id)
  (setq z2 (* u z1))
 (prin1 z2))


 (defun getdata ()
   (action_tile "pop1" "(set_tile $key $value)")
  (setq z1 (atof(get_tile "pop1"))))
 

发表于 2007-5-25 23:25 | 显示全部楼层

从下拉表中读出的数据是表中的顺序号

读数程序可以这样写:

(defun getdata ()
  (setq u (nth (atoi (get_tile "pop1")) '(3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4)))
  (setq z1 (nth (atoi (get_tile "pop2")) '(18 19 20 21 22 23 24 25 26 27 28 29 30)))
)
如果有规律也可以这样写:

(defun getdata ()
  (setq u (+ (* (atoi (get_tile "pop1")) 0.1) 3))
  (setq z1 (+ (atoi (get_tile "pop2")) 18))
)

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2007-5-26 09:13 | 显示全部楼层
我已经解决读数问题了.谢谢zzxxqq版主.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 06:31 , Processed in 0.163934 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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