找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1871|回复: 2

[研讨] API应用 设计了一个测试XDDCL部分函数界面

[复制链接]
发表于 2014-10-8 09:37:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 Free-Lancer 于 2014-10-8 09:55 编辑

包含了 Edit_Box Popup_List List_Box Image_Button Button Radio_button Toggle 几个控件,用来测试图形交互及组件关联,目前仅是界面,关联函数还没有完成

和 ODCL 相比,增加了 手动写 DCL 代码部分,控件事件不管是 DCL 还是 ODCL 都要老老实实一个个写,ODCL 不过是给你自动定义了事件名函数称,具体代码还是要一字一字的码

DCL纵然有百般缺点,但也不是一无是处,轻量,和 ACAD 融合更好更通用,函数简单

至于编写,其实克服畏难心理更重要,仔细分析下 DCL 构成,不就是 Lisp 的嵌套表吗,{ { { } } } , 把这个大括号想象成 ( ( ( ) ) ) 不就简单了!

在 Vlide 里像写 Lisp 语句一样写  DCL 无需借助其他编辑器!
  1. (defun c:tt (/                   _k2_callback         _k4_callback  _k5_callback
  2.              _k6_callback  strl                 fn               id
  3.              radioKlst           buttonKlst         editKlst      toggleKlst
  4.              listKlst           imageKlst         lyrlst               linetypelst
  5.              what_next
  6.             )
  7.   (defun _k4_callback ()
  8.     (xd::dcl:seterror "hello")
  9.   )
  10.   (setq        strl            '("temp:dialog {"
  11.                       "label = \"XD::DCL:xxx Func Test\";"
  12.                       "  :row{"
  13.                       "  :column {"
  14.                       "  :row{"
  15.                       "    :popup_list { label = \"Layer\"; key = \"p1\";}"
  16.                       "    :popup_list { label = \"Linetype\"; key = \"p2\";}"
  17.                       "  }"
  18.                       "  :row {"
  19.                       "    :list_box { label = \"Numb\"; width = 8; heitht = 15; key = \"l1\";}"
  20.                       "    :list_box { label = \"Dist\"; width = 8; heitht = 15; key = \"l2\";}"
  21.                       "   }"
  22.                       "  :row {"
  23.                       "    :boxed_radio_row {"
  24.                       "     label = \"option1\";"
  25.                       "     :radio_button { label = \"change\"; key = \"r1\";}"
  26.                       "     :radio_button { label = \"undo\"; key = \"ur\";}"
  27.                       "    }"
  28.                       "    :boxed_radio_row {"
  29.                       "     label = \"option2\";"
  30.                       "     :radio_button { label = \"unc\"; key = \"r2\";}"
  31.                       "     :radio_button { label = \"redo\"; key = \"r3\";}"
  32.                       "    }"
  33.                       "   }"
  34.                       "  :boxed_row {"
  35.                       "    label = \"Input\";"
  36.                       "    :edit_box {  key = \"k1\";}"
  37.                       "    :text { key = \"s1\"; width = 4; value = \"\";}"
  38.                       "    :edit_box {  key = \"k2\";}"
  39.                       "    :text { width = 4; value = \"=\";}"
  40.                       "    :edit_box {  key = \"k3\";}"
  41.                       "  }"
  42.                       "  :boxed_row{"
  43.                       "    label = \"Toggle\";"
  44.                       "    :toggle { label = \"t1\"; key = \"t1\";}"
  45.                       "    :toggle { label = \"t2\"; key = \"t2\";}"
  46.                       "    :toggle { label = \"t3\"; key = \"t3\";}"
  47.                       "    :toggle { label = \"t4\"; key = \"t4\";}"
  48.                       "  }"
  49.                       "  :boxed_row{"
  50.                       "    label = \"button option\";"
  51.                       "    :button { label = \"calc\"; key = \"k4\";}"
  52.                       "    :button { label = \"Pick\"; key = \"k5\";}"
  53.                       "    :button { label = \"select\"; key = \"k6\";}"
  54.                       "  }"
  55.                       "  }"
  56.                       "  :boxed_column {"
  57.                       "    label = \"Image Button Test\";"
  58.                       "    :image_button {width = 18; height = 8; key = \"i1\";}"
  59.                       "    :image_button {width = 18; height = 8; key = \"i2\";}"
  60.                       "    :image_button {width = 18; height = 8; key = \"i3\";}"
  61.                       "  }"
  62.                       " }"
  63.                       " :row {"
  64.                       "  :text {width = 6;  value = \"Color\";}"
  65.                       "  :image_button {  width = 4; fixed_width = true; key = \"col\";}"
  66.                       "  spacer_1;"
  67.                       "  ok_cancel;"
  68.                       "  }"
  69.                       "  errtile;"
  70.                       "}"
  71.                      )
  72.         radioKlst   '(("r1" "ur") ("r3" "r4"))
  73.         listKlst    '("p1" "p2" "l1" "l2")
  74.         editKlst    '("k1" "k2" "k3")
  75.         buttonKlst  '("k4" "k5" "k6")
  76.         toggleKlst  '("t1" "t2" "t3" "t4")
  77.         imageKlst   '("i1" "i2" "i3" "i4")
  78.         lyrlst            (mapcar 'car (xd::object:get "laery"))
  79.         linetypelst (mapcar 'car (xd::object:get "ltype"))
  80.         fn            (xd::dcl:make strl)
  81.         id            (xd::dcl:load fn "temp") ;_加载
  82.         what_next   2
  83.   )
  84.   (while (>= what_next 2)
  85.     (XD::Dcl:ButtonAction
  86.       '("k4" "k2" "k5" "k6" "k1" "k3")
  87.       '("_k4_callback")
  88.     )
  89.     (xd::dcl:accept) ;_加载后先设置默认、定义动作
  90.     (setq what_next (xd::dcl:show)) ;_设置完成后显示对话框,控制权交DCL
  91.   )
  92.   (xd::dcl:unload id fn);_卸载、删除对话框
  93.   (mapcar '(lambda (x) (set (read x) nil))
  94.           (append radioKlst        listKlst      editKlst
  95.                   buttonKlst        toggleKlst    imageKlst
  96.                  )
  97.   ) ;_不记录默认值时统一释放变量
  98.   (princ)
  99. )

20141008093007.jpg

评分

参与人数 1D豆 +5 收起 理由
lucas3 + 5 说的太好了!感谢!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 93个

财富等级: 招财进宝

发表于 2014-10-8 14:43:45 | 显示全部楼层
XD::Dcl:ButtonAction 之类的没有定义

点评

http://bbs.xdcad.net/thread-676326-1-1.html  详情 回复 发表于 2014-10-8 15:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-8 15:14:20 | 显示全部楼层
我的我啊我 发表于 2014-10-8 14:43
XD:cl:ButtonAction 之类的没有定义

http://bbs.xdcad.net/thread-676326-1-1.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-27 12:11 , Processed in 0.207128 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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