明茉菲嫣 发表于 2011-10-14 17:35:15

dcl中的下拉列表框中数据怎么在lisp中读出来

1.dcl中的下拉列表框
:popup_list{
            label="选择绘图类型   ";
            key="mylist";
            edit_width=20;
            list ="桌子\n椅子\n茶几\n门\n窗户";
                  }
具体的在lisp程序中该如何确定你选择的是哪一个,并且将它调用出来
2.比如说我要画出桌子,就是当我选择桌子这个选项之后是
(setq u (nt h (atoi (get_tile "mylist")) '(桌子 椅子 茶几 门 窗户)))
是么?可是我用(princ u)命令行出来的是桌子
请教一下,实在是不明白,下拉框到底该怎么对应到具体的值上?

vormittag 发表于 2011-10-14 18:40:41

(atoi (get_tile "mylist")) 不就是你想要的值么?如果选了桌子就是0,选了门就是3。
(setq u (nth (atoi (get_tile "mylist")) '(桌子 椅子 茶几 门 窗户))) 是把'(桌子 椅子 茶几 门 窗户)这个列表里第(atoi (get_tile "mylist"))个元素赋值给u,你选的是桌子,得到的当然是桌子。

明茉菲嫣 发表于 2011-10-14 20:42:38

那如果选择了桌子,u值到底是等于“桌子”这个字符串还是指代0这个整数呢?
请教了,刚入门

明茉菲嫣 发表于 2011-10-14 21:11:17

(defun c:jzlt(/ dcl_id )
        (setq dcl_id (load_dialog "jzlt.dcl"))
        (if (not (new_dialog "jzlt" dcl_id)) (exit))
          (if (= xbl nil) (setq xbl 1.0))
          (if (= ybl nil) (setq ybl 1.0))
            (set_tile "xbl" (rtos xbl))
            (set_tile "ybl" (rtos ybl))
   
            (pbxs u)
              (action_tile "xbl" "(setq xbl (atof $value))")
            (action_tile "ybl" "(setq ybl (atof $value))")
            
              (action_tile "accept" " (getlist)(done_dialog)")
              (action_tile "cancel" "(exit)(done_dialog)")
      

               (start_dialog)

        (unload_dialog dcl_id)
   


(cond ((= u "桌子") (command "-insert" "zhuozi" pause xbl ybl))
      ((= u "窗户") (command "-insert" "chuanghu" pause xbl ybl))
      ((= u "床") (command "-insert" "chuang" pause xbl ybl))
      
         )




)
(defun show(kimage sld / x y)
       (setq x (dimx_tile kimage))
       (setq y (dimy_tile kimage))
       (start_image kimage)
       (fill_image 0 0 x y -2)
       (slide_image 0 0x y sld)
       (end_image)
)
(defun getlist ()
(setq u (nth (atoi (get_tile "mylist")) '(桌子 窗户 床)))

)
(defun pbxs(u)
(cond ((= u "桌子") (show "kimage" "zhuozi"))
      ((= u "窗户") (show "kimage" "chuanghu"))
      ((= u "床") (show "kimage" "chuang"))
      
         )
)

明茉菲嫣 发表于 2011-10-14 21:11:50

谁能指教一下,不明白。。。。。。。

vormittag 发表于 2011-10-14 22:03:10

明茉菲嫣 发表于 2011-10-14 20:42 static/image/common/back.gif
那如果选择了桌子,u值到底是等于“桌子”这个字符串还是指代0这个整数呢?
请教了,刚入门

u的值取决于你给它的赋值。
你的语句不是有(setq u ...)么?

明茉菲嫣 发表于 2011-10-14 22:17:00

可是我现在使用
(setq u(get_tile "mylist"))
然后我用(princ u)检验,无论我选择列表中的哪一个,命令行始终都显示o,也就是第一个索引,这是为什么?

明茉菲嫣 发表于 2011-10-14 22:39:33

谢谢各位的帮忙,解决了。。。。
vormittag 和cabinsummer ,非常感谢你们

jyzas 发表于 2013-7-28 17:52:01

看来楼上的指教,又学了点,谢谢

趣意人生 发表于 2021-4-5 00:14:27

收藏学习了!
页: [1]
查看完整版本: dcl中的下拉列表框中数据怎么在lisp中读出来