找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5852|回复: 8

[教学] OpenDCL对话框设计-Grid控件设计教学演示。。。

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-4-19 11:58:00 | 显示全部楼层 |阅读模式

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

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

×
晓东工具箱下的按图层统计填充面积工具,主要就是使用的Grid控件。


不多说,先上视频。



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

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2013-4-19 11:59:01 | 显示全部楼层
1、OnIntalize 事件处理函数

[pcode=lisp,true]
  (defun c:HatchAreaForm_OnInitialize (/)
    (setq layall ($xdob_layer_getalllayer)          ;;获得当前图形所有层信息
          layon ($xdob_layer_getallonlayer)       ;;获得所有可见层信息
    )
    (if (not $xdtb_global_hatcharea_var)   ;;预置对话框控件状态,恢复上次运行状态。
      (setq $xdtb_global_hatcharea_var (list '("JSFS" 0) '("UNITS" 0) '("JD" 1) '("CHECKALL" 1) '("ZEROCHECKBOX" 0)))
    )
    (setq JSFS (cadr (assoc "JSFS" $xdtb_global_hatcharea_var))   ;;计算各层填充面积
          UNITS (cadr (assoc "UNITS" $xdtb_global_hatcharea_var)) ;;显示精度
          JD (cadr (assoc "JD" $xdtb_global_hatcharea_var))
          CHECKALLBOX (cadr (assoc "CHECKALL" $xdtb_global_hatcharea_var))
          ZEROCHECKbox (cadr (assoc "ZEROCHECKBOX" $xdtb_global_hatcharea_var))
    )
    (cond
      ((= UNITS 0)
        (setq js_UNITS 1)
      )
      ((= UNITS 1)
        (setq js_UNITS 10000)
      )
      ((= UNITS 2)
        (setq js_UNITS 666.66667)
      )
    )
    (dcl_Control_SetValue CheckAll CHECKALLBOX)
    (dcl_OptionList_SetCurSel TypeJS JSFS)
    (dcl_ComboBox_SetCurSel HatchJD JD)
    (dcl_ComboBox_SetCurSel AREAUNITS UNITS)
    (dcl_Control_SetValue ZEROCHECK ZEROCHECKbox)
    (if (= JSFS 0)
      (progn
        (Grid_Display Grid_DataON)
        (setq Grid_Curent_Items Grid_DataON)
      )
      (progn
        (Grid_Display Grid_DataALL)  ;;对Grid控件操作显示表格数据
        (setq Grid_Curent_Items Grid_DataALL)
      )
    )
    (if (= (length Grid_DataAll) (length Grid_DataOn))
      (progn
        (dcl_OptionList_SetCurSel TypeJS 1)  ;;根据图层数据,设置一些控件的可用性。有关闭层的时候,可见层控件可选
        (dcl_Control_SetEnabled TypeJS nil)
      )
    )
  )
[/pcode]


2、Grid 控件的处理函数

       这段代码可以稍加修改,就能用于您的程序。

[pcode=lisp,true](defun Grid_Display (val)  (dcl_Grid_Clear HatchArea_Grid)      ; 清空Grid
  (setq i 1)
  (setq TotalVal1 0)
  (foreach n val
    (if (= ZEROCHECKbox 1)
      (progn
        (if (/= (caddr n) 0.0)
          (progn
            (setq intRow
                  (dcl_Grid_AddString HatchArea_Grid
                                      (strcat
                                              (itoa i) "\t \t"
                                              (car n)
                                              "\t"
                                              (cadr n)
                                              "\t"
                                              (setq val1
                                                    ($xdlsp_string_format
                                                                          (/
                                                                             (caddr n) js_UNITS
                                                                          ) JD
                                                    )
                                              )
                                      )
                  )
            )
            (dcl_Grid_SetCellCheckState HatchArea_Grid
                                        intRow 1 1
            )
            (setq TotalVal1 (+ TotalVal1
                               (atof val1)
                            )
            )
            (setq i (1+ i))
          )
        )
      )
      (progn
        (setq intRow (dcl_Grid_AddString HatchArea_Grid
                                         (strcat
                                                 (itoa i) "\t \t"
                                                 (car n) "\t"
                                                 (cadr n) "\t"
                                                 (setq val1
                                                       ($xdlsp_string_format
                                                                             (/
                                                                                (caddr n) js_UNITS
                                                                             ) JD
                                                       )
                                                 )
                                         )
                     )
        )
        (dcl_Grid_SetCellCheckState HatchArea_Grid
                                    intRow 1 1
        )
        (setq TotalVal1 (+ TotalVal1 (atof val1)))
        (setq i (1+ i))
      )
    )
  )
  (dcl_Control_SetCaption TotalVal
                          ($xdlsp_string_format TotalVal1
                                                JD
                          )
  )
  (dcl_Control_SetCaption TotalUnit
                          (dcl_ComboBox_GetEBText AREAUNITS)
  )
  (dcl_Control_SetFontBold TotalVal t)
)
[/pcode]


2、获得填充面积相关函数

[pcode=lisp,true]
(defun $get_Grid_Data (lay / carea datal e i n ss)
    (acet-ui-progress "数据采集中" (length lay))
    (setq l 0)
    (foreach n lay
      (acet-ui-progress l)
      (if (setq ss (ssget "x" (list (cons 8 n) (cons 0 "HATCH"))))
        (progn
          (setq carea (car (xdrx_getarea ss))
                i (sslength ss)
          )
          (setq datal (cons (list n (itoa i) carea) datal))
        )
        (progn
          (setq datal (cons (list n "0" 0.0) datal))
        )
      )
      (setq l (1+ l))
    )
    (acet-ui-progress)
    (setq datal (reverse datal))
    (setq Grid_Curent_Items datal)
  )
[/pcode]

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

使用道具 举报

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

使用道具 举报

发表于 2013-4-19 13:34:33 | 显示全部楼层
开源的?真不错啊:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2013-4-19 21:32:16 | 显示全部楼层
精彩继续。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2013-4-20 15:49:55 | 显示全部楼层
{:soso_e179:},很赞,支持!谢谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-27 08:58:52 | 显示全部楼层
XD大大,为什么视频看不了,能在发下吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2013-5-27 11:36:53 | 显示全部楼层
panziyang000 发表于 2013-5-27 08:58
XD大大,为什么视频看不了,能在发下吗

以前制作的SWF由于软件没激活,到期了。

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

使用道具 举报

发表于 2015-1-29 19:37:59 | 显示全部楼层
好东西,有启发,能不能把odcl也发出来啊。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 12:19 , Processed in 0.295495 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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