明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1525|回复: 6

请教各位同仁

[复制链接]
发表于 2004-5-14 19:47:00 | 显示全部楼层 |阅读模式
我刚学习lisp编程,遇到一个问题,不知道怎么解决。请知道的麻烦解决一下。
我的问题是:我编写一个dcl对话框,内容如下:
bzfl593:dialog{
label="标准法兰绘制(HG20595-97)";

:boxed_row{
label="参数选择";
:popup_list{label="设计压力";key="pp";edit_width=8;}
:popup_list{label="公称直径";key="dd";edit_width=8;}
}

spacer_1;
ok_cancel;
}
在主程序里有3个列表List1("1" "2") list2("0.1" "0.2" "0.3") list3("0.1" "0.2")

我想问.在lisp里面如何获取Popup_list的数值并赋值。同时还想当pp显示1的时候直径框显示List2 当pp为2的时候,直径显示list3.
因为在网吧上网,没办法发程序,希望大家能看懂!
发表于 2004-5-14 19:58:00 | 显示全部楼层
popup_list 返回的是索引值,你根据索引值到列表中取得实际值


在pp的动作函数里按照选择给dd填入相应的内容
 楼主| 发表于 2004-5-14 20:22:00 | 显示全部楼层
不好意思斑竹。我明白是明白了。我也差不多这么做的,但是就是连接不上,因为办公室机子不能上论坛,我就没办法发程序,假若有这方面的例题还请发个上来,我看一下。
发表于 2004-5-14 20:45:00 | 显示全部楼层
这个程序不复杂,你现写一个都可以啊
 楼主| 发表于 2004-5-14 21:09:00 | 显示全部楼层
呵呵,斑竹太高估我了。我编程是初学阶段,学习dcl纯粹是还不会走就跑了。呵呵。我编程大部分就是在凑程序,东摘西凑。因此记不住很多。
发表于 2004-5-14 21:31:00 | 显示全部楼层
  1. (defun act_pp(val)
  2.    (start_list "dd")
  3.    (cond
  4.        ((= val "0") (mapcar 'add_list list2))
  5.        ((= val "1") (mapcar 'add_list list3))
  6.    )
  7.    (end_list)
  8. )
  9. (defun c:test( / dcl_id list1 list2 list3)
  10.    (setq list1 '("1" "2"))
  11.    (setq list2 '("0.1" "0.2" "0.3"))
  12.    (setq list3 '("0.1" "0.2"))
  13.    (setq dcl_id (load_dialog "tmp"))
  14.    (new_dialog "bzfl593" dcl_id)
  15.    (start_list "pp") (mapcar 'add_list list1) (end_list)
  16.    (start_list "dd") (mapcar 'add_list list2) (end_list)
  17.    (action_tile "pp" "(act_pp $value)")
  18.    (start_dialog)
  19.    (unload_dialog dcl_id)
  20.    (princ)
  21. )
 楼主| 发表于 2004-5-15 21:22:00 | 显示全部楼层
谢谢斑竹。非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 05:50 , Processed in 0.170739 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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