找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 10442|回复: 39

[每日一码] 【Gu_xl】动态复制、移动(可缩放、旋转、镜像、对齐等)

  [复制链接]

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-9-24 15:33:16 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 牢固 于 2013-9-24 15:36 编辑

功能:选择对象进行复制或移动。复制或移动过程中可以对源对象进行缩放、旋转、镜像、对齐等动作。
源码中大量使用了矩阵运算(使用了高飞鸟的矩阵运算函数库)和动态GRREAD(自定义的带捕捉的GRREAD函数)。
程序为开源代码,程序中可能有Bug,也可能不符合您平时画图习惯,请大家不要发帖求我改进或改编成符合您的绘图方式的程序,该源码仅作为大家学习交流的代码,大家尽可以拿去研习,可以提出改进意见,然后自己改编成合适自己绘图的方式的程序,或进一步改进优化,如大家能将自己改进的代码发上来共享,本人将不胜感激,一律给予适当加分!
主程序代码:
  1. ;;;*************************************************
  2. (princ "\n**动态复制、移动 By Gu_xl 命令: DynDrag**")
  3. ;;动态复制、移动(c:DynDrag)
  4. (defun c:DynDrag (/ SS       ORIGN    LOOP     COPYFLAG BASEPT
  5.                     AXORIGN  AXBASEPT SOURCEOBJS        TARGETOBJS
  6.                     TMP      GR       PT       TMAT     NEWORIGN
  7.                     ROT      P1       P2       SCALE    P3
  8.                     P4 TARGETDIS REFDIS LASTOBJS LASTBASEPT
  9.                     KD MOVEFLAG    TMPBASEPT
  10.                     )
  11.   (princ "\n选择物体:")
  12.   (if (and
  13.         (setq ss (ssget))
  14.         (progn
  15.           (initget 6)
  16.         (setq orign (getpoint "\n选择基点:"))
  17.           )
  18.         (setq Loop t)
  19.         )
  20.     (progn
  21.       (initget "C M")
  22.       (setq copyflag (getkword "\n[复制<C>/移动<M>]<C>:"))
  23.       (setq copyflag (or (not copyflag) (= "C" copyflag)))
  24.       (setq basept (trans orign 1 0))
  25.       (setq SourceObjs
  26.              (gxl-SEL-MAPCAR
  27.                ss
  28.                '(lambda (x) (vlax-ename->vla-object x))
  29.                )
  30.             )
  31.       (if CopyFlag
  32.           (setq targetObjs (mapcar 'vla-copy SourceObjs))
  33.         (progn
  34.           (setq targetObjs SourceObjs)
  35.           (setq SourceObjs (mapcar 'vla-copy SourceObjs))
  36.           )
  37.         )
  38.       (setq ss (ssadd)
  39.             MoveFlag t)
  40.       (foreach obj targetObjs (ssadd (vlax-vla-object->ename obj) ss))
  41.       ;(setq lastobjs SourceObjs lastbasept basept)
  42.       (prompt "\r**点取位置或 {改基点[T]/改转角[R]/转90度[A]/镜像[M]/左右翻[S]/上下翻[D]/缩放[L]/对齐[F]/}<退出>:")
  43.       (while loop
  44.         (setq gr (gxl-GE-GRREAD '(t 15) orign ss))
  45.         (princ "\r**点取位置或 {改基点[T]/改转角[R]/转90度[A]/镜像[M]/左右翻[S]/上下翻[D]/缩放[L]/对齐[F]/}<退出>:")
  46.         (cond
  47.           ((and MoveFlag (= 5 (car gr))) ;_ 复制移动
  48.            (grdraw orign (cadr gr) 7 1)
  49.            (setq pt (trans (cadr gr) 1 0))
  50.            (if (> (distance pt basept) (* 0.005 (getvar "viewsize")))
  51.              (progn
  52.            (setq tmat (vlax-tmatrix (gxl-Mat-TranslateBy2P basept pt)))
  53.            (mapcar '(lambda (x)(vla-TransformBy x tmat)) targetObjs)
  54.            (setq basept pt)
  55.            (mapcar '(lambda (x) (vla-Highlight x :vlax-true)) targetObjs)
  56.            )
  57.              )
  58.            )
  59.           ((and MoveFlag (= 3 (car gr))) ;_ 确定
  60.            (grdraw orign (cadr gr) 7 1)
  61.            (setq pt (trans (cadr gr) 1 0))
  62.            (setq tmat (vlax-tmatrix (gxl-Mat-TranslateBy2P basept pt)))
  63.            (mapcar '(lambda (x)(vla-TransformBy x tmat)) targetObjs)
  64.            (setq lastObjs targetObjs lastbasept basept)
  65.            (if copyflag
  66.              (progn               
  67.                (setq targetObjs (mapcar 'vla-copy targetObjs))
  68.                (setq ss (ssadd))
  69.                (foreach obj targetObjs
  70.                  (ssadd (vlax-vla-object->ename obj) ss)
  71.                  )
  72.                
  73.                )
  74.              (progn
  75.                (setq MoveFlag nil)
  76.                (mapcar 'vla-delete SourceObjs)
  77.                )
  78.              )
  79.             
  80.            )
  81.           ((or (= 25 (car gr)) ;_ 退出
  82.                (and (= 2 (car gr)) (or (= (cadr gr) 13) (= (cadr gr) 32)))
  83.                )
  84.            (redraw)
  85.            (if copyFlag
  86.              (progn
  87.            (mapcar 'vla-delete targetObjs)
  88.            )
  89.              )
  90.            (setq loop nil)
  91.            )
  92.           ((and (= 2 (car gr))
  93.                 (or (= (cadr gr) (ascii "t")) (= (cadr gr) (ascii "T")))
  94.                 ) ;_ 改基点[T]
  95.            (redraw)
  96.            
  97.            (if (and
  98.                  (not copyflag)
  99.                  lastobjs
  100.                  )
  101.              (progn
  102.                (initget 6)
  103.            (while (not (setq Neworign (getpoint "\n选择基点:"))))
  104.            (setq Neworign (trans Neworign 1 0))
  105.                (setq tmat (vlax-tmatrix (gxl-Mat-TranslateBy2P  basept Neworign)))
  106.                (mapcar '(lambda (x)(vla-TransformBy x tmat)) lastobjs)
  107.                (setq basept Neworign)
  108.                )
  109.              (if (and copyflag lastobjs)
  110.                (progn
  111.                  (mapcar '(lambda (x) (vla-put-Visible x :vlax-false)) targetObjs)
  112.                  (initget 6)
  113.                  (while (not (setq Neworign (getpoint "\n选择基点:"))))
  114.                  (setq Neworign (trans Neworign 1 0))
  115.                  (setq tmat (vlax-tmatrix (gxl-Mat-TranslateBy2P lastbasept Neworign  )))
  116.                  (mapcar '(lambda (x)(vla-TransformBy x tmat)) lastobjs)
  117.                  (mapcar '(lambda (x) (vla-put-Visible x :vlax-true)) targetObjs)
  118.                  )
  119.                (progn
  120.                  (while (not (setq basept (getpoint "\n选择基点:"))))
  121.                  (setq basept (trans basept 1 0))
  122.                  )
  123.                )
  124.              )
  125.            
  126.            )
  127.           ((and (= 2 (car gr))
  128.                 (or (= (cadr gr) (ascii "r")) (= (cadr gr) (ascii "R")))
  129.                 ) ;_ 改转角
  130.            (setq tmp targetObjs tmpbasept basept)
  131.            (if copyflag
  132.              (progn
  133.            (mapcar '(lambda (x) (vla-put-Visible x :vlax-false)) tmp)
  134.            (setq targetObjs lastObjs basept lastbasept)
  135.            (setq ss (ssadd))
  136.            (foreach obj targetObjs
  137.                  (ssadd (vlax-vla-object->ename obj) ss)
  138.                  )
  139.            )
  140.              )
  141.            (command "_rotate" ss "" (trans basept 0 1))
  142.            (while (= 1 (logand (getvar 'cmdactive) 1))
  143.              (command pause)
  144.              )
  145.            (if copyflag
  146.              (progn
  147.            (mapcar '(lambda (x) (vla-put-Visible x :vlax-true)) tmp)
  148.            (setq targetObjs tmp basept tmpbasept)
  149.            (setq ss (ssadd))
  150.            (foreach obj targetObjs
  151.                  (ssadd (vlax-vla-object->ename obj) ss)
  152.                  )
  153.            )
  154.              )
  155.            )
  156.           ((and  MoveFlag
  157.                  (= 2 (car gr))
  158.                 (or (= (cadr gr) (ascii "a")) (= (cadr gr) (ascii "A")))
  159.                 ) ;_ 转90度
  160.            (setq tmat (vlax-tmatrix (gxl-Mat-Rotation basept pi2)))
  161.            (mapcar '(lambda (x)(vla-TransformBy x tmat)) targetObjs)
  162.            )
  163.           ((and MoveFlag
  164.                 (= 2 (car gr))
  165.                 (or (= (cadr gr) (ascii "m")) (= (cadr gr) (ascii "M")))
  166.                 ) ;_ 镜像
  167.            (initget 7)
  168.            (setq p1 (getpoint "\n指定第一点:"))
  169.            (initget 7)
  170.            (setq p2 (getpoint p1 "\n指定第二点:"))
  171.            (setq tmat (gxl-Mat-Reflect p1 p2))
  172.            (setq basept (gxl-MAT-MXP tmat basept)
  173.                  tmat (vlax-tmatrix tmat)
  174.                  )
  175.            (mapcar '(lambda (x)(vla-TransformBy x tmat)) targetObjs)
  176.            )
  177.           ((and MoveFlag
  178.                 (= 2 (car gr))
  179.                 (or (= (cadr gr) (ascii "s")) (= (cadr gr) (ascii "S")))
  180.                 ) ;_ 左右翻
  181.            (setq tmat (vlax-tmatrix (gxl-Mat-Reflect basept (polar basept pi2 10))))
  182.            (mapcar '(lambda (x)(vla-TransformBy x tmat)) targetObjs)
  183.            )
  184.           ((and MoveFlag
  185.                 (= 2 (car gr))
  186.                 (or (= (cadr gr) (ascii "d")) (= (cadr gr) (ascii "D")))
  187.                 ) ;_ 上下翻
  188.            (setq tmat (vlax-tmatrix (gxl-Mat-Reflect basept (polar basept 0 10))))
  189.            (mapcar '(lambda (x)(vla-TransformBy x tmat)) targetObjs)
  190.            )
  191.           ((and MoveFlag
  192.                 (= 2 (car gr))
  193.                 (or (= (cadr gr) (ascii "l")) (= (cadr gr) (ascii "L")))
  194.                 ) ;_ 缩放
  195.            (command "_scale" ss "" )
  196.            (while (= 1 (logand (getvar 'cmdactive) 1))
  197.              (command pause)
  198.              )
  199.            ;|(initget 7 "R")
  200.            (setq scale (getdist (trans basept 0 1) "\n指定比例因子或 [参照(R)]:"))
  201.            (if (= scale "R")
  202.              (progn
  203.                (initget 6)
  204.                (setq refdis (getdist (trans basept 0 1) "\n指定参照长度 <1>:"))
  205.                (if (null refdis)(setq refdis 1.0))
  206.                (initget 7)
  207.                (setq targetdis (getdist  "\n指定目标长度::"))
  208.                (setq scale (/ targetdis refdis))
  209.               )
  210.              )
  211.            (setq tmat (vlax-tmatrix (gxl-Mat-Scalebase basept scale)))
  212.            (mapcar '(lambda (x)(vla-TransformBy x tmat)) targetObjs)|;
  213.            )
  214.           ((and MoveFlag
  215.                 (= 2 (car gr))
  216.                 (or (= (cadr gr) (ascii "f")) (= (cadr gr) (ascii "F")))
  217.                 ) ;_ 对齐
  218.            (initget 7)
  219.            (setq p1 (getpoint "\n指定源对象第1点:"))
  220.            (initget 7)
  221.            (setq p3 (getpoint p1 "\n指定目标第1点:"))
  222.            (grdraw p1 p3 1 -1)
  223.            (initget 7)
  224.            (setq p2 (getpoint "\n指定源对象第2点:"))
  225.            (initget 7)
  226.            (setq p4 (getpoint "\n指定目标第2点:"))
  227.            (grdraw p2 p4 1 -1)
  228.            (setq p1 (trans p1 1 0))
  229.            (setq p2 (trans p2 1 0))
  230.            (setq p3 (trans p3 1 0))
  231.            (setq p4 (trans p4 1 0))
  232.            (setq scale (/ (distance p3 p4) (distance p1 p2)))
  233.            (setq tmat (gxl-Mat-TranslateBy2P p1 p3)
  234.                  tmat (gxl-MAT-MXM
  235.                         tmat
  236.                         (gxl-Mat-Rotation p1 (- (angle p3 p4) (angle p1 p2)))
  237.                         )
  238.                  )
  239.            (initget "Y N  ")
  240.            (setq kd (getkword "是否基于对齐点缩放对象?[是(Y)/否(N)] <否>:"))
  241.            (setq kd (= "Y" kd))
  242.            (if kd
  243.              (setq tmat
  244.                     (gxl-MAT-MXM
  245.                       (gxl-Mat-Scalebase p3 scale)
  246.                       tmat
  247.                       )
  248.                    )
  249.              )
  250.            (if copyflag
  251.              (progn
  252.                (setq tmp (mapcar 'vla-copy targetObjs))
  253.                (setq lastobjs tmp lastbasept (gxl-MAT-MXP tmat basept))
  254.                (setq tmat (vlax-tmatrix tmat))
  255.                (mapcar '(lambda (x)(vla-TransformBy x tmat)) tmp)
  256.                )
  257.              (progn
  258.                (setq lastobjs  targetObjs basept (gxl-MAT-MXP tmat basept))
  259.                (mapcar '(lambda (x)(vla-TransformBy x (vlax-tmatrix tmat))) targetObjs)
  260.                (mapcar 'vla-delete SourceObjs)
  261.                
  262.                (setq MoveFlag nil)
  263.                )
  264.              )
  265.                
  266.            )
  267.           )
  268.         )
  269.       )
  270.     )
  271.   (redraw)
  272.   (princ)
  273.   )
  274. (princ)

全部源码下载:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:DynDrag.LSP 
下载次数:574  文件大小:31.13 KB  售价:5D豆 [记录]
下载权限: 学生 以上  [免费赚D豆]


评分

参与人数 4D豆 +20 贡献 +2 收起 理由
bzhjl + 5 很给力!经验;技术要点;资料分享奖!
/db_自贡黄明儒_ + 5 很给力!经验;技术要点;资料分享奖!
xshrimp + 5 + 1
炫翔 + 5 + 1 很给力!经验;技术要点;资料分享奖!

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 8711个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 5578个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 5578个

财富等级: 富甲天下

发表于 2013-9-24 20:10:30 | 显示全部楼层
本帖最后由 HLCAD 于 2013-9-25 16:35 编辑

发现一个小BUG:命令:
命令: DynDrag

选择物体:
选择对象: 指定对角点: 找到 27 个

选择对象:

选择基点:
[复制<C>/移动<M>]<C>:
**点取位置或 {改基点[T]/改转角[R]/转90度[A]/镜像[M]/左右翻[S]/上下翻[D]/缩放[L]/对齐[F]/}<退出>:_rotate
UCS 当前的正角方向:  ANGDIR=逆时针  ANGBASE=0.0

选择对象:   找到 0 个
选择对象:
命令: ; 错误: 参数类型错误: 二维/三维点: nil


如果在“[复制<C>/移动<M>]<C>:”这步,在一新位置复制所选实体,再按“R”改转角,则不出错。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-9-25 07:22:00 | 显示全部楼层

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

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

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

使用道具 举报

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

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

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

使用道具 举报

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

使用道具 举报

发表于 2013-10-1 18:32:08 | 显示全部楼层
本帖最后由 dbx5511 于 2013-10-2 15:09 编辑

这个是非常的不错,稍微有一点小小的瑕疵,就是命令执行的最后一个拷贝的东西,旋转后,会产生一个所拷贝的物体,实际上这个物体是需要的,就是命令最后要终止的时候,动态预览的那个选择集,会落在图上,会产生一组所选来拷贝或者旋转的物体,虚线显示,需要人工取删除。其他的非常好,比天正建筑的自由拷贝还要好。另外一个就是最好拷贝一次后,如果有调整角度(旋转),下一个的动态预览的角度最好是调整后的,现在的预览角度是最初开始拷贝的角度。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 41个

财富等级: 招财进宝

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

使用道具 举报

发表于 2013-10-6 20:07:12 | 显示全部楼层
最近还在用这个插件,感觉如果能在拷贝和旋转中间切换,就更好了,另外一个问题就是如果图纸文件很大的话,有捕捉的时候,操作命令会很卡。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 22:30 , Processed in 0.321303 second(s), 74 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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