找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3412|回复: 11

[研讨] XDRX_APIz中Table系列函数修改单元格的三种方法效能测试

[复制链接]

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-7-3 20:23:21 | 显示全部楼层 |阅读模式

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

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

×
刚刚拿到最新的XDRX_API测试版,为提高表格单元格属性访问速度,老大对表格系列函数进行了重大改进,下面是表格单元格赋值的三种方式效能比较测试结果:
第一种方法:单元格整体赋值法:
  1. (defun c:t18 ()
  2.   (if (and
  3.         (setq row (getint "\n行数<退出>:"))
  4.         (setq col (getint "\n列数<退出>:"))
  5.         (setq pt (getpoint "\n位置点:"))
  6.       )
  7.     (progn
  8.       (GXL-TIMEINIT)
  9.   ; 创建5行4列的表格,表格行间距 10.0,列宽12.
  10.       (setq tb (xdrx_table_make pt row 10. col 12.))
  11.       ;;设置所有表格区域字高为 3.0 (xdrx_table_SetTextHeight 表格 字高  区域位码值)
  12.       (xdrx_table_SetTextHeight tb  3.0 7)
  13.       (setq i 0
  14.             k 0
  15.       )                                      
  16. ; 构建单元格值列表
  17.       (setq lst nil)
  18.       (while (< i row)
  19.         (setq k 0)
  20.         (while (< k col)               
  21.            (setq lst (cons (list i k (strcat (itoa i) "-" (itoa k))) lst))
  22.           (setq k (1+ k))
  23.         )
  24.         (setq i (1+ i))
  25.       )
  26.       (xdrx_table_setTextString tb lst)
  27.       (GXL-TIMEOUT)
  28.     )
  29.   )
  30.   (princ)

  31. )

20X20单元格用时  1.342  秒
100X100单元格表格用时:40.545 秒

第二种方法:单元格逐个赋值法:
  1. (defun c:t20 ()
  2.   (if (and
  3.         (setq row (getint "\n行数<退出>:"))
  4.         (setq col (getint "\n列数<退出>:"))
  5.         (setq pt (getpoint "\n位置点:"))
  6.       )
  7.     (progn
  8.       (GXL-TIMEINIT)
  9.        (setq tb (xdrx_table_make pt row 10. col 12.))
  10.       (xdrx_table_SetTextHeight tb  3.0 7)
  11.       (setq i 0
  12.             k 0
  13.       )                                      
  14. ; 逐个单元格赋值
  15.       (setq lst nil)
  16.        (while (< i row)
  17.         (setq k 0)
  18.         (while (< k col)               
  19.           (xdrx_table_setTextString tb i k (strcat (itoa i) "-" (itoa k)))
  20.           (setq k (1+ k))
  21.         )
  22.         (setq i (1+ i))
  23.       )
  24.        (GXL-TIMEOUT)
  25.     )
  26.   )
  27.   (princ)

  28. )

20X20单元格用时   5.46  秒
100X100单元格表格用时:CAD直接当掉了,半个小时没测试出来结果!

第三种方法:先打开表格数据库,逐个单元格赋值后,关闭表格数据库
  1. (defun c:t19 ()
  2.   (if (and
  3.         (setq row (getint "\n行数<退出>:"))
  4.         (setq col (getint "\n列数<退出>:"))
  5.         (setq pt (getpoint "\n位置点:"))
  6.       )
  7.     (progn
  8.       (GXL-TIMEINIT)
  9.       (setq tb (xdrx_table_make pt row 10. col 12.))
  10.       (xdrx_table_SetTextHeight tb  3.0 7)
  11.       (setq i 0
  12.             k 0
  13.       )                                       
  14. ; 逐个单元格赋值
  15.       (setq lst nil)
  16.       (xdrx_table_open tb) ;_ 打开表格数据库
  17.       (while (< i row)
  18.         (setq k 0)
  19.         (while (< k col)               
  20.           (xdrx_table_setTextString tb i k (strcat (itoa i) "-" (itoa k)))
  21.            (setq k (1+ k))
  22.         )
  23.         (setq i (1+ i))
  24.       )
  25.       ;关闭表格数据库
  26.       (xdrx_table_close)
  27.       (GXL-TIMEOUT)
  28.     )
  29.   )
  30.   (princ)

  31. )

20X20单元格用时   1.467  秒
100X100单元格表格用时: 40.903

由此可以看出,第一种方法效率最高,第三种方法效能其次,基本和第一种方法效能相当,第二种方法效能最低!当单元格数量较多时,第二种方法和其他两种方法效率差距越明显!正因为这种差异,所以需要批量修改单元格属性时尽量使用第一种方法和第三种方法,避免使用第二种方法!在不需要批量修改单元格属性时,使用哪种方法都可以!
以上三种方式,对于提取表格属性操作也是同样有效的!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 51个

财富等级: 招财进宝

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

使用道具 举报

发表于 2013-7-3 22:11:36 来自手机 | 显示全部楼层
牢固 发表于 1&nbsp;小时前
刚刚拿到最新的XDRX_API测试版,为提高表格单元格属性访问速度,老大对表格系列函数进行了重大改进,下面是表格单元格赋值的三种方式效能比较测试结果:
第一种方法:单元格整体赋值法:
[code=

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

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

 楼主| 发表于 2013-7-4 11:04:39 | 显示全部楼层
本帖最后由 牢固 于 2013-7-4 11:48 编辑

发现CAD 表格有禁止更新的选项,在修改表格属性前禁止表格更新,修改i完成后,再统一更新,进行这样处理后,一楼所述三种方法效能基本一致了!
下面是更改后的代码:
  1. ;;创建表格并整体赋值测试1
  2. (defun c:t18 ()
  3.   (if (and
  4.         (setq row (getint "\n行数<退出>:"))
  5.         (setq col (getint "\n列数<退出>:"))
  6.   (setq pt (getpoint "\n位置点:"))
  7.       )
  8.     (progn
  9.       (setq *StartTime* (car (_VL-TIMES)))
  10.     ;; 创建表格,表格行间距 10.0,列宽12.
  11.       (setq tb (xdrx_table_make pt row 10. col 12.))
  12.       ;;设置所有表格区域字高为 3.0 (xdrx_table_SetTextHeight 表格 字高  区域位码值)
  13.       (xdrx_table_SetTextHeight tb  3.0 7)
  14.       (setq i 0
  15.             k 0
  16.       )
  17.       (setq lst nil)
  18.       (while (< i row)
  19.         (setq k 0)
  20.         (while (< k col)               
  21.           (setq lst (cons (list i k (strcat (itoa i) "-" (itoa k))) lst))
  22.           (setq k (1+ k))
  23.         )
  24.         (setq i (1+ i))
  25.       )
  26.       ;;一次性写入表格
  27.       (xdrx_table_setTextString tb lst)
  28.       (princ (strcat "\n  用时  " (rtos (* 0.001 (- (car (_VL-TIMES)) *StartTime*)) 2 4) "  秒 "))
  29.     )
  30.   )
  31.   (princ)

  32. )
  33. ;;创建表格并整体赋值测试3
  34. (defun c:t19 ()
  35.   (if (and
  36.         (setq row (getint "\n行数<退出>:"))
  37.         (setq col (getint "\n列数<退出>:"))
  38.   (setq pt (getpoint "\n位置点:"))
  39.       )
  40.     (progn
  41.       (setq *StartTime* (car (_VL-TIMES)))
  42.      ;;创建表格,表格行间距 10.0,列宽12.
  43.       (setq tb (xdrx_table_make pt row 10. col 12.))
  44.       ;;禁止表格更新
  45.        (xdrx_table_SuppressRegenerateTable tb 1)
  46.       ;;设置所有表格区域字高为 3.0 (xdrx_table_SetTextHeight 表格 字高  区域位码值)
  47.       (xdrx_table_SetTextHeight tb  3.0 7)
  48.       (setq i 0
  49.             k 0
  50.       )                                       ; 单元格赋值
  51.       (setq lst nil)
  52.       ;;表格数据库写打开
  53.       (xdrx_table_open tb "w")
  54.       ;(xdrx_table_setOpenWrite)
  55.       (while (< i row)
  56.         (setq k 0)
  57.         (while (< k col)
  58.     ;;逐单元格写数据
  59.     (xdrx_table_setTextString tb i k (strcat (itoa i) "-" (itoa k)))
  60.           (setq k (1+ k))
  61.         )
  62.         (setq i (1+ i))
  63.       )
  64.       ;;更新表格
  65.        (xdrx_table_SuppressRegenerateTable tb 0)
  66.       ;;关闭表格数据库
  67.       (xdrx_table_close)
  68.       (princ (strcat "\n  用时  " (rtos (* 0.001 (- (car (_VL-TIMES)) *StartTime*)) 2 4) "  秒 "))
  69.     )
  70.   )
  71.   (princ)

  72. )
  73. ;;创建表格并整体赋值测试2
  74. (defun c:t20 ()
  75.   (if (and
  76.         (setq row (getint "\n行数<退出>:"))
  77.         (setq col (getint "\n列数<退出>:"))
  78.   (setq pt (getpoint "\n位置点:"))
  79.       )
  80.     (progn
  81.       (setq *StartTime* (car (_VL-TIMES)))
  82.   ;; 创建表格,表格行间距 10.0,列宽12.
  83.       (setq tb (xdrx_table_make pt row 10. col 12.))
  84.       ;;禁止更新
  85.       (xdrx_table_SuppressRegenerateTable tb 1)
  86.       ;;设置所有表格区域字高为 3.0 (xdrx_table_SetTextHeight 表格 字高  区域位码值)
  87.       (xdrx_table_SetTextHeight tb  3.0 7)
  88.       (setq i 0
  89.             k 0
  90.       )                                       ; 单元格赋值
  91.       (setq lst nil)
  92.       ;(xdrx_table_open tb)
  93.       (while (< i row)
  94.         (setq k 0)
  95.         (while (< k col)               
  96.         ; 设置表格文字颜色
  97.     (xdrx_table_SetTextString tb i k (strcat (itoa i) "-" (itoa k)))
  98.           ;(setq lst (cons (list i k (strcat (itoa i) "-" (itoa k))) lst))
  99.           (setq k (1+ k))
  100.         )
  101.         (setq i (1+ i))
  102.       )
  103.       ;;更新表格
  104.       (xdrx_table_SuppressRegenerateTable tb 0)
  105.       (princ (strcat "\n  用时  " (rtos (* 0.001 (- (car (_VL-TIMES)) *StartTime*)) 2 4) "  秒 "))
  106.     )
  107.   )
  108.   (princ)

  109. )

同样建立100X100 表格并赋值,效率如下:
T18 用时  47.125  秒
T19 用时   46.875  秒
T20 用时  46.703  秒
三种方法时间基本一致!
T20数据库不用开关,直接禁止更新,速度最快!

结论 :需要修改表格属性时,需先用函数(xdrx_table_SuppressRegenerateTable tb 1)禁止表格更新,然后逐一修改表格属性,最后用(xdrx_table_SuppressRegenerateTable tb 0)统一更新,这样效能才能达到最高!
提取表格属性,因不涉及表格的更新,所以无需特别处理!

点评

受G版启发,仔细看了看Help,ActiveX中也有这个属性,下面是修改后的一个测试 命令: tt Insertpoint: 32.28 这个数值不是真实的,运行完后表格完全显示出来还要一会儿时间,没法计时,感觉不短  详情 回复 发表于 2013-7-4 13:10
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-4 13:10:34 | 显示全部楼层
牢固 发表于 2013-7-4 11:04
发现CAD 表格有禁止更新的选项,在修改表格属性前禁止表格更新,修改i完成后,再统一更新,进行这样处理后 ...

受G版启发,仔细看了看Help,ActiveX中也有这个属性,下面是修改后的一个测试
  1. (defun c:tt (/ ms tb m n t0)
  2.   ;;RegenerateTableSuppressed
  3.   (setq ms (vla-get-modelspace
  4.       (vla-get-activedocument (vlax-get-acad-object))
  5.     )
  6.   )
  7.   (if (setq p (getpoint "\nInsertpoint: "))
  8.     (progn
  9.       (setq t0 (* 86400 (getvar "tdusrtimer")))
  10.       (setq tb (vla-addtable ms (vlax-3d-point p) 100 100 10. 30.))
  11.       (vla-put-RegenerateTableSuppressed tb :vlax-true)
  12.       (setq m 1
  13.      n 1
  14.       )
  15.       (repeat 99
  16. (repeat 99
  17.    (vla-settext tb m n (strcat (itoa m) "-" (itoa n)))
  18.    (setq n (1+ n))
  19. )
  20. (setq m (1+ m) n 1)
  21.       )
  22.       (vla-put-RegenerateTableSuppressed tb :vlax-false)
  23.       (princ (- (* 86400 (getvar "tdusrtimer")) t0))
  24.     )
  25.   )
  26.   (princ)
  27. )

命令: tt
Insertpoint: 32.28
这个数值不是真实的,运行完后表格完全显示出来还要一会儿时间,没法计时,感觉不短

点评

除了xdrx_table_SuppressRegenerateTable外,ARX还有 xdrx_table_SuppressHeaderRow xdrx_table_SuppressTitleRow 对头行和TITLE行进行控制。 ARX对表格提供100来个方法控制,这些方法还在摸索。  详情 回复 发表于 2013-7-4 14:03
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-7-4 14:03:41 | 显示全部楼层
Free-Lancer 发表于 2013-7-4 13:10
受G版启发,仔细看了看Help,ActiveX中也有这个属性,下面是修改后的一个测试
命令: tt
Insertpoint: 3 ...

除了xdrx_table_SuppressRegenerateTable外,ARX还有
xdrx_table_SuppressHeaderRow
xdrx_table_SuppressTitleRow


对头行和TITLE行进行控制。


ARX对表格提供100来个方法控制,这些方法还在摸索。


在最终显示表格前,所有的编辑操作都在禁止更新情况下完成,速度很快。


只是在最终显示表格的时候生成等待一次时间。


表格这种东西不适合反复编辑,用程序最大效率的编辑好。


不能把CAD下的表格和EXCEL的显示速度比,不一类的软件,CAD软件需要实时的实体绘制,CAD已经提供了尽可能最快的处理表格实体的方式了。

CAD的表格实体功能还是很强的,每个单元格都有方法控制,可以加公式。。。。,大家还是应该充分利用的,以前用的少,主要还是CAD提供的处理表格的 工具不够。 以后会利用XDRX_API,给大家提供更多的表格工具。

点评

我以前更新excel的体会是 表格都是很慢的主儿 毕竟不是专业的数据库 涉及大量单元格的时候还是禁用显示比较好 excel可以选择切换到其他工作表时才操作 好像挂起了一样 对cad来说 也许找个理由移开视口可能也是个选择  详情 回复 发表于 2013-8-11 01:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2013-7-4 21:06:27 | 显示全部楼层
这样改了改
  1. (defun XD::Table:Open (tb)
  2.   (vla-put-regeneratetablesuppressed tb :vlax-true)
  3.   (vla-put-titlesuppressed tb :vlax-true)
  4.   (vla-put-headersuppressed tb :vlax-true)
  5. )
  6. (defun XD::Table:Close (tb)
  7.   (vla-put-headersuppressed tb :vlax-false)
  8.   (vla-put-titlesuppressed tb :vlax-false)
  9.   (vla-put-regeneratetablesuppressed tb :vlax-false)
  10. )
  11. ;;Lst - (NumRow NumColumn String)
  12. (defun XD::Table:SetText (tb lst)
  13.   (XD::Table:Open tb)
  14.   (mapcar '(lambda (x) (vla-settext tb (car x) (cadr x) (caddr x)))
  15.    lst
  16.   )
  17.   (XD::Table:Close tb)
  18. )
  19. (defun c:tt (/ rn cn ln ms tb t0)
  20.   (setq Rn 99
  21. Cn 99
  22.   )
  23.   (repeat 99
  24.     (repeat 100
  25.       (setq ln (cons (list Rn cn (strcat (itoa rn) "-" (itoa cn))) ln)
  26.      cn (1- cn)
  27.       )
  28.     )
  29.     (setq cn 99
  30.    rn (1- rn)
  31.     )
  32.   )
  33.   (if (setq p (getpoint "\nInsert point: "))
  34.     (progn
  35.       (setq ms (vla-get-modelspace
  36.    (vla-get-activedocument (vlax-get-acad-object))
  37.         )
  38.      t0 (* 86400 (getvar "tdusrtimer"))
  39.      tb (vla-addtable ms (vlax-3d-point p) 100 100 10. 40.)
  40.       )      
  41.       (xd::table:settext tb ln)
  42.       (princ "\nUsed timed = ")
  43.       (princ (- (* 86400 (getvar "tdusrtimer")) t0))
  44.       (princ " s!")
  45.     )
  46.   )
  47.   (vlax-release-object ms)
  48.   (princ)
  49. )

构造表放在外部,一次性写入速度还是很快的
命令: TT
Insert point:
Used timed = 14.103 s!

点评

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-7-4 21:20:59 | 显示全部楼层
Free-Lancer 发表于 2013-7-4 21:06
这样改了改

构造表放在外部,一次性写入速度还是很快的

对TABLE理解和操作越来越熟了,加油。

点评

知道了这个禁止更新,其他就正常应用没什么技巧了,不过桌子的Table是真不咋地,刚才的100X100表格,用鼠标随便选择几个单元格,右键合并,这个生成太慢了!  详情 回复 发表于 2013-7-4 21:50
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-4 21:50:08 | 显示全部楼层
本帖最后由 Free-Lancer 于 2013-7-4 21:55 编辑
XDSoft 发表于 2013-7-4 21:20
对TABLE理解和操作越来越熟了,加油。

知道了这个禁止更新,其他就正常应用没什么技巧了,不过桌子的Table是真不咋地,刚才的100X100表格,用鼠标随便选择几个单元格,右键合并,这个生成太慢了!

一个经验,用 VLA 方法,任何修改前先 (xd::table:open table) ,然后对表格操作,所有操作完成后再, (xd::table:close table),另外就是Tabel中要用到的数据在前面形成表的形式,修改表的时候仅进行表操作,减少哪怕是 Lisp 的运算符操作,这样才能最大可能提高效率。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 33个

财富等级: 招财进宝

发表于 2013-8-11 01:49:41 | 显示全部楼层
本帖最后由 cre8o 于 2013-8-11 01:51 编辑
XDSoft 发表于 2013-7-4 14:03
除了xdrx_table_SuppressRegenerateTable外,ARX还有
xdrx_table_SuppressHeaderRow
xdrx_table_Suppre ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-20 06:56 , Processed in 0.463480 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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