明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1094|回复: 1

活用滑动条怎么用LISP驱动??

[复制链接]
发表于 2007-3-21 17:14 | 显示全部楼层 |阅读模式

DCL语句如下:

dia9a:dialog{
            label="滑动条辅助[编号设计]范例";
            :boxed_row{
                   label="新编号前置类别";
                   :column{
                        :text{
                        label="A←英文字→Z";
                        alignment=centered;
                             }
                        :slider{
                        key="slider_abc";
                        min_value=1;
                        max_value=26;
                        width=30;
                        height=1;
                        small_increment=1;
                        big_increment=1;
                               }
                           }
                     :column{
                            spacer_0;
                            :edit_box{key="kabc";edit_width=2;}
                             }
                   }
             :boxed_row{
                   label="新后置编号";
                   :column{
                        :text{
                        label="1←数字→99";
                        alignment=centered;
                             }
                        :slider{
                        key="slider_123";
                        min_value=1;
                        max_value=99;
                        width=30;
                        height=1;
                        small_increment=1;
                        big_increment=10;
                               }
                           }
                     :column{
                            spacer_0;
                            :edit_box{key="k123";edit_width=2;}
                             }
                   }
                   :edit_box{
                            label="新编号全名";
                            key="knumstr";
                            edit_width=10;
                            alignment=centered;
                            fixed_width=true;
                            }
                            spacer_1;
                            ok_cancel;
}

AutoLISP语句如下:

(defun c:dia9a()
  (setvar "cmdecho" 0)
  (dcl_dia9a)
  (prin1)
 )
(defun dcl_dia9a()
  (setq dcl_id (load_dialog "dia9a"))
  (new_dialog "dia9a" dcl_id)
  (def_dia9a)
  (action_tile "slider_abc" "(sub_s_abc $value)")
  (action_tile "slider_123" "(sub_s_123 $value)")
  (action_tile "accept" "(ok_dia9a) (done_dialog 1)")
  (setq dd (start_dialog))
  (if (= dd 1)
    (progn
      (setvar "cmdecho" 1)
      (command "text" pause pause pause numstr)
      (setvar "cmdecho" 0)
      )
    )
  )
(defun def_dia9a()
 (set_tile "kabc" "A")
 (set_tile "slider_abc" "1")
 (set_tile "k123" "50")
 (set_tile "slider_123" "50")
  (get_numstr)
  )
(defun sub_s_abc(vvs)
  ;依ASCII码转换为单一字符
  ;(chr 65) →"A"   (chr 90) →"Z"
  (set_tile "kabc" (chr (+ 64 (atoi vvs))))
  (get_numstr)
   )
(defun sub_s_123(vvs)
  (set_tile "k123" vvs)
  (get_numstr)
)
(defun get_numstr()
  (setq numbstr1 (get_tile "kabc"))
  (setq numbstr2 (get_tile "k123"))
  (set_tile "knumstr" (strcat numstr1  numstr2))
  )
(defun ok_dia9a()
  (setq numstr (get_tile "knumstr"))
  )

运行效果是DCL对话框闪烁,就是不不出来!请问那个高手有招吗??

发表于 2007-3-24 23:21 | 显示全部楼层
程序中变量名错了。numbstr1写成了numstr1,numbstr2写成了numstr2。下面程序调试通过:
  1. (defun c:dia9a()
  2. (setvar "cmdecho" 0)
  3. (dcl_dia9a)
  4. (prin1)
  5. )
  6. (defun dcl_dia9a()
  7. (setq dcl_id (load_dialog "dia9a"))
  8. (new_dialog "dia9a" dcl_id)
  9. (def_dia9a)
  10. (action_tile "slider_abc" "(sub_s_abc $value)")
  11. (action_tile "slider_123" "(sub_s_123 $value)")
  12. (action_tile "accept" "(ok_dia9a) (done_dialog 1)")
  13. (action_tile "cancel" "(done_dialog 0)")
  14. (setq dd (start_dialog))
  15. (if (= dd 1) (progn
  16.   (setvar "cmdecho" 1)
  17.   (command "text" pause pause pause numstr)
  18.   (setvar "cmdecho" 0)
  19. ))
  20. )
  21. (defun def_dia9a()
  22. (set_tile "kabc" "A")
  23. (set_tile "slider_abc" "1")
  24. (set_tile "k123" "50")
  25. (set_tile "slider_123" "50")
  26. (get_numstr)
  27. )
  28. (defun get_numstr ()
  29. (setq numstr1 (get_tile "kabc"))
  30. (setq numstr2 (get_tile "k123"))
  31. (set_tile "knumstr" (strcat numstr1 numstr2))
  32. )
  33. (defun sub_s_abc(vvs)
  34. ;依ASCII码转换为单一字符
  35. ;(chr 65) →"A"   (chr 90) →"Z"
  36. (set_tile "kabc" (chr (+ 64 (atoi vvs))))
  37. (get_numstr)
  38. )
  39. (defun sub_s_123(vvs)
  40. (set_tile "k123" vvs)
  41. (get_numstr)
  42. )
  43. (defun ok_dia9a()
  44. (setq numstr (get_tile "knumstr"))
  45. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 14:05 , Processed in 0.248113 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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