马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
刚刚拿到最新的XDRX_API测试版,为提高表格单元格属性访问速度,老大对表格系列函数进行了重大改进,下面是表格单元格赋值的三种方式效能比较测试结果:
第一种方法:单元格整体赋值法:
 - (defun c:t18 ()
- (if (and
- (setq row (getint "\n行数<退出>:"))
- (setq col (getint "\n列数<退出>:"))
- (setq pt (getpoint "\n位置点:"))
- )
- (progn
- (GXL-TIMEINIT)
- ; 创建5行4列的表格,表格行间距 10.0,列宽12.
- (setq tb (xdrx_table_make pt row 10. col 12.))
- ;;设置所有表格区域字高为 3.0 (xdrx_table_SetTextHeight 表格 字高 区域位码值)
- (xdrx_table_SetTextHeight tb 3.0 7)
- (setq i 0
- k 0
- )
- ; 构建单元格值列表
- (setq lst nil)
- (while (< i row)
- (setq k 0)
- (while (< k col)
- (setq lst (cons (list i k (strcat (itoa i) "-" (itoa k))) lst))
- (setq k (1+ k))
- )
- (setq i (1+ i))
- )
- (xdrx_table_setTextString tb lst)
- (GXL-TIMEOUT)
- )
- )
- (princ)
- )
20X20单元格用时 1.342 秒
100X100单元格表格用时:40.545 秒
第二种方法:单元格逐个赋值法:
 - (defun c:t20 ()
- (if (and
- (setq row (getint "\n行数<退出>:"))
- (setq col (getint "\n列数<退出>:"))
- (setq pt (getpoint "\n位置点:"))
- )
- (progn
- (GXL-TIMEINIT)
- (setq tb (xdrx_table_make pt row 10. col 12.))
- (xdrx_table_SetTextHeight tb 3.0 7)
- (setq i 0
- k 0
- )
- ; 逐个单元格赋值
- (setq lst nil)
- (while (< i row)
- (setq k 0)
- (while (< k col)
- (xdrx_table_setTextString tb i k (strcat (itoa i) "-" (itoa k)))
- (setq k (1+ k))
- )
- (setq i (1+ i))
- )
- (GXL-TIMEOUT)
- )
- )
- (princ)
- )
20X20单元格用时 5.46 秒
100X100单元格表格用时:CAD直接当掉了,半个小时没测试出来结果!
第三种方法:先打开表格数据库,逐个单元格赋值后,关闭表格数据库
 - (defun c:t19 ()
- (if (and
- (setq row (getint "\n行数<退出>:"))
- (setq col (getint "\n列数<退出>:"))
- (setq pt (getpoint "\n位置点:"))
- )
- (progn
- (GXL-TIMEINIT)
- (setq tb (xdrx_table_make pt row 10. col 12.))
- (xdrx_table_SetTextHeight tb 3.0 7)
- (setq i 0
- k 0
- )
- ; 逐个单元格赋值
- (setq lst nil)
- (xdrx_table_open tb) ;_ 打开表格数据库
- (while (< i row)
- (setq k 0)
- (while (< k col)
- (xdrx_table_setTextString tb i k (strcat (itoa i) "-" (itoa k)))
- (setq k (1+ k))
- )
- (setq i (1+ i))
- )
- ;关闭表格数据库
- (xdrx_table_close)
- (GXL-TIMEOUT)
- )
- )
- (princ)
- )
20X20单元格用时 1.467 秒
100X100单元格表格用时: 40.903
由此可以看出,第一种方法效率最高,第三种方法效能其次,基本和第一种方法效能相当,第二种方法效能最低!当单元格数量较多时,第二种方法和其他两种方法效率差距越明显!正因为这种差异,所以需要批量修改单元格属性时尽量使用第一种方法和第三种方法,避免使用第二种方法!在不需要批量修改单元格属性时,使用哪种方法都可以!
以上三种方式,对于提取表格属性操作也是同样有效的!
|