找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3302|回复: 17

[分享]:求曲线间最近距离及最近点的LISP程序

[复制链接]
发表于 2004-1-5 16:13:43 | 显示全部楼层 |阅读模式

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

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

×
2004.01.09.11.45:通用的程序在5楼,可以求任意曲线间的最小距离。[/COLOR]

这个命题是 陌生人 在
http://www.xdcad.net/forum/showthread.php?s=&threadid=127606
中提出来的,我一直很感兴趣,今天上午监考时没有事情,就尝试解决这个问题。

下面就是刚刚写出来的求共面曲线间最近距离及最近点的LISP程序,可以应用于求直线段,圆弧,圆,复义线(包括spline化过的,较慢)之间。对于spline和ellipse,可以先将它们用复义线模拟出来,再求其之间的距离。

请各位大侠提提意见~


  1.   [FONT=courier new]
  2. ;_求共面曲线间最近距离及最近点的LISP程序__BY__WKAI__晓东CAD论坛______________
  3. ;_2004.01.05.16.02___________________________________________________________
  4. ;____________________________________________________________________________
  5. ;____________________________________________________________________________
  6. (defun c:tt (/ ent1 ent2 n1 n2 dist)
  7.   (princ "\n请选择共面的线段、圆、圆弧,或者复义线,第一段:")
  8.   (setq vlobject1 (vlax-ename->vla-object (setq ent1 (car (entsel)))))
  9.   (princ "\n请选择共面的线段、圆、圆弧,或者复义线,第二段:")
  10.   (setq vlobject2 (vlax-ename->vla-object (setq ent2 (car (entsel)))))
  11.   (setq int (vlax-variant-value (vla-intersectwith vlobject1 vlobject2 acextendnone)))
  12.   (if (> (vlax-safearray-get-u-bound int 1) 0)
  13.     (princ "\n最小距离为:0")
  14.     (progn
  15.       (setq s1 (is_pl ent1 vlobject1))
  16.       (setq s2 (is_pl ent2 vlobject2))
  17.       (setq n1 0
  18.             n2 0
  19.       )
  20.       (repeat (sslength s1)
  21.         (setq ent1 (ssname s1 n1)
  22.               n1   (1+ n1)
  23.               n2   0
  24.         )
  25.         (repeat        (sslength s2)
  26.           (setq        ent2 (ssname s2 n2)
  27.                 n2   (1+ n2)
  28.           )
  29.           (setq dist (append dist (list (distance_between_ents ent1 ent2))))
  30.         )
  31.       )
  32.       (setq dist (car (vl-sort dist (function (lambda (e1 e2) (< (car e1) (car e2)))))))
  33.       (command "line" (cadr dist) (caddr dist) "")
  34.       (princ "\n最小距离为:")
  35.       (princ (car dist))

  36.     )
  37.   )
  38.   (is_simple_obj s1)
  39.   (is_simple_obj s2)
  40.   (princ)
  41. )
  42. ;____________________________________________________________________________
  43. ;____________________________________________________________________________
  44. ;____________________________________________________________________________
  45. (defun is_pl (e v / s)
  46.   (if (or (= "POLYLINE" (cdr (assoc 0 (entget e))))
  47.           (= "LWPOLYLINE" (cdr (assoc 0 (entget e))))
  48.       )
  49.     (progn
  50.       (vla-copy v)
  51.       (command "explode" (entlast))
  52.       (setq s (ssget "p"))
  53.     )
  54.     (setq s (ssadd)
  55.           s (ssadd e s)
  56.     )
  57.   )
  58.   s
  59. )
  60. (defun is_simple_obj (s)
  61.   (if (> (sslength s) 1)
  62.     (command "erase" s "")
  63.   )
  64. )
  65. ;____________________________________________________________________________
  66. ;____________________________________________________________________________
  67. ;____________________________________________________________________________
  68. (defun distance_between_arc_and        (a1 a2 / dd en1 en2 di1 di2)
  69.   (if (= "CIRCLE" (cdr (assoc 0 (entget (vlax-vla-object->ename a1)))))
  70.     (progn
  71.       (setq cen1 (vlax-safearray->list (vlax-variant-value (vla-get-center a1))))
  72.       (setq di3 (vlax-curve-getClosestPointTo a2 cen1))
  73.       (setq en3 (polar cen1 (angle cen1 di3) (vla-get-radius a1)))
  74.       (setq dd (append dd (list (list (distance di3 en3) en3 di3))))
  75.     )
  76.     (progn
  77.       (setq en1 (vlax-safearray->list (vlax-variant-value (vla-get-startpoint a1))))
  78.       (setq en2 (vlax-safearray->list (vlax-variant-value (vla-get-endpoint a1))))
  79.       (setq cen1 (vlax-safearray->list (vlax-variant-value (vla-get-center a1))))
  80.       (setq di1 (vlax-curve-getClosestPointTo a2 en1))
  81.       (setq di2 (vlax-curve-getClosestPointTo a2 en2))
  82.       (setq di3 (vlax-curve-getClosestPointTo a2 cen1))
  83.       (setq en3 (polar cen1 (angle cen1 di3) (vla-get-radius a1)))
  84.       (setq dd (append dd (list (list (distance di1 en1) en1 di1))))
  85.       (setq dd (append dd (list (list (distance di2 en2) en2 di2))))
  86.       (if (vlax-curve-getParamAtPoint a1 en3)
  87.         (setq dd (append dd (list (list (distance di3 en3) en3 di3))))
  88.       )
  89.     )
  90.   )
  91.   (car (vl-sort dd (function (lambda (e1 e2) (< (car e1) (car e2))))))
  92. )
  93. (defun distance_between_line_and (a1 a2 / dd en1 en2 di1 di2)
  94.   (setq en1 (vlax-safearray->list (vlax-variant-value (vla-get-startpoint a1))))
  95.   (setq en2 (vlax-safearray->list (vlax-variant-value (vla-get-endpoint a1))))

  96.   (setq di1 (vlax-curve-getClosestPointTo a2 en1))
  97.   (setq di2 (vlax-curve-getClosestPointTo a2 en2))


  98.   (setq dd (append dd (list (list (distance di1 en1) en1 di1))))
  99.   (setq dd (append dd (list (list (distance di2 en2) en2 di2))))

  100.   (car (vl-sort dd (function (lambda (e1 e2) (< (car e1) (car e2))))))
  101. )
  102. ;____________________________________________________________________________
  103. ;____________________________________________________________________________
  104. ;____________________________________________________________________________
  105. (defun distance_between_ents (e1 e2 / a1 a2 en1 en2 cen1 di1 di2 di3 dd dd_l)
  106.   (command "osnap" "non")
  107.   (setq vlo1 (vlax-ename->vla-object e1))
  108.   (setq vlo2 (vlax-ename->vla-object e2))
  109.   (setq int (vlax-variant-value (vla-intersectwith vlo1 vlo2 acextendnone)))
  110.   (if (> (vlax-safearray-get-u-bound int 1) 0)
  111.     (princ "\n距离为0")
  112.     (progn
  113.       (if (or (= "ARC" (cdr (assoc 0 (entget e1))))
  114.               (= "CIRCLE" (cdr (assoc 0 (entget e1))))
  115.           )
  116.         (setq dd_l (append dd_l (list (distance_between_arc_and vlo1 vlo2))))
  117.         (setq dd_l (append dd_l (list (distance_between_line_and vlo1 vlo2))))
  118.       )
  119.       (if (or (= "ARC" (cdr (assoc 0 (entget e2))))
  120.               (= "CIRCLE" (cdr (assoc 0 (entget e2))))
  121.           )
  122.         (setq dd_l (append dd_l (list (distance_between_arc_and vlo2 vlo1))))
  123.         (setq dd_l (append dd_l (list (distance_between_line_and vlo2 vlo1))))
  124.       )
  125.       (setq dd_l (car (vl-sort dd_l (function (lambda (e1 e2) (< (car e1) (car e2)))))))
  126.       dd_l
  127.     )
  128.   )
  129. )
  130. ;____________________________________________________________________________
  131. ;____________________________________________________________________________
  132. ;____________________________________________________________________________
  133. (princ "\n求共面曲线间最近距离及最近点的LISP程序__BY__WKAI__晓东CAD论坛")

  134.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-1-6 01:36:50 | 显示全部楼层
wkai是老师?哈。教什么的呀。
看过你几个程序,觉得你功底很扎实,而且写出来的程序赏心悦目。
顺便,(defun distance_between_ents ) 中progn段可用以下代替。欢迎交流。

  1. (if (or (member (cdr (assoc 0 (entget e1)))  '("ARC" "CIRCLE"))
  2.         (member (cdr (assoc 0 (entget e2)))  '("ARC" "CIRCLE")))
  3.     (setq dd_l (append dd_l (list (distance_between_arc_and vlo2 vlo1))))
  4.     (setq dd_l (append dd_l (list (distance_between_line_and vlo2 vlo1))))
  5. )

点评

请问高手,两条共面的多线段,求每个点到另一条多线段的最小距离,并把数据提取到电子表格中吗,可以编辑嘛,真心请教了  详情 回复 发表于 2014-4-7 18:26
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-1-5 21:03:00 | 显示全部楼层
上次看到那命题的时候,我就想归根结底就是弧线和直线的关系,可最后想到还有椭圆,还有sline,结果回复的字都输好了,还是没回复.
直线和椭圆,弧线和椭圆,应该可以求,再复杂,我是解不了了.(模拟毕竟是大约)

图形是个学问,我是不可能研究了
下面这个网站真牛呀.

  1. <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="700" id="AutoNumber1" height="900">
  2.   <tr>
  3.     <td width="100%" height="489">
  4.       <iframe name="I1" width="100%" height="100%" src="http://www.saltire.com/applets/advanced_geometry/spline/spline.htm">
  5. 浏览器不支持嵌入式框架或配置为不显示嵌入式框架
  6.       </iframe>
  7.     </td>
  8.   </tr>
  9. </table>
复制代码

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-1-7 01:10:56 | 显示全部楼层
最初由 陌生人 发布
[B]wkai是老师?哈。教什么的呀。
看过你几个程序,觉得你功底很扎实,而且写出来的程序赏心悦目。
顺便,(defun distance_between_ents ) 中progn段可用以下代替。欢迎交流。
[code]
(if (or (member (cdr (assoc ... [/B]


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

使用道具 举报

 楼主| 发表于 2004-1-8 11:46:38 | 显示全部楼层
这个可以求任意两条曲线(各种类型,共面与否)的最小距离及最近点。
可以设置叠代次数,足够满足精度需求。


  1.   [FONT=courier new]
  2. ;_2004.01.09.11.40___________________________________
  3. ;_曲线间最小距离及最近点__BY__WKAI__晓东CAD论坛__
  4. ;________________________________________________________
  5. ;________________________________________________________
  6. (defun c:tt (/ pts min_distacne vlo1 vlo2 st_par ed_par ent n m min_pt str)
  7.   (setvar "osmode" 0)
  8.   (setq n (getint "\n叠代次数:"))
  9.   (if n
  10.     ()
  11.     (setq n 2)
  12.   )
  13.   (setq        m   1000
  14.         str ""
  15.   )
  16.   (setq vlo_object1 (vlax-ename->vla-object (car (entsel "\n曲线一:"))))
  17.   (setq vlo_object2 (vlax-ename->vla-object (car (entsel "\n曲线二:"))))
  18.   (setq tt1 (t2 vlo_object1 vlo_object2 n m))
  19.   (setq tt2 (t2 vlo_object2 vlo_object1 n m))
  20.   (setq        tt (if (> (car tt1) (car tt2))
  21.              tt2
  22.              tt1
  23.            )
  24.   )
  25.   (command "ucs" "w")
  26.   (command "line" (cadr tt) (caddr tt) "")
  27.   (command "ucs" "p")
  28.   (princ (strcat "\n叠代次数为" (itoa n) ",最小距离为" (rtos (car tt) 2 20)))
  29.   (princ "\n最近点1:")
  30.   (princ (cadr tt))
  31.   (princ "   最近点2:")
  32.   (princ (caddr tt))
  33.   (princ)
  34. )
  35. ;________________________________________________________________________
  36. ;________________________________________________________________________
  37. ;________________________________________________________________________
  38. (defun t2 (vlo1 vlo2 rep rod /)
  39.   (setq        st_par             (vlax-curve-getstartparam vlo1)
  40.         ed_par             (vlax-curve-getendparam vlo1)
  41.         pts             (list (vlax-curve-getstartpoint vlo1))
  42.         min_distacne (/ (vlax-curve-getdistatparam vlo1 ed_par) rod)
  43.   )
  44.   (repeat rep
  45.     (setq pts (list (vlax-curve-getpointatparam vlo1 st_par)))
  46.     (t1 vlo1 st_par ed_par min_distacne)
  47.     (setq min_pt (car (vl-sort pts
  48.                                '(lambda        (s1 s2)
  49.                                   (< (distance s1 (vlax-curve-getClosestPointTo vlo2 s1))
  50.                                      (distance s2 (vlax-curve-getClosestPointTo vlo2 s2))
  51.                                   )
  52.                                 )
  53.                       )
  54.                  )
  55.     )
  56.     (setq position (vl-position min_pt pts))
  57.     (if        (= (1+ position) (length pts))
  58.       (setq ed_par (vlax-curve-getendparam vlo1))
  59.       (setq ed_par (if (vlax-curve-getparamatpoint vlo1 (nth (1+ position) pts))
  60.                      (vlax-curve-getparamatpoint vlo1 (nth (1+ position) pts))
  61.                      (vlax-curve-getendparam vlo1)
  62.                    )
  63.       )
  64.     )
  65.     (if        (= position 0)
  66.       (setq st_par (vlax-curve-getstartparam vlo1))
  67.       (setq st_par (vlax-curve-getparamatpoint vlo1 (nth (1- position) pts)))
  68.     )
  69.     (setq min_distacne
  70.            (/ (- (vlax-curve-getdistatparam vlo1 ed_par)
  71.                  (vlax-curve-getdistatparam vlo1 st_par)
  72.               )
  73.               rod
  74.            )
  75.     )
  76.   )
  77.   (list        (distance min_pt (vlax-curve-getClosestPointTo vlo2 min_pt))
  78.         min_pt
  79.         (vlax-curve-getClosestPointTo vlo2 min_pt)
  80.   )
  81. )
  82. ;________________________________________________________________________
  83. ;________________________________________________________________________
  84. (defun t1 (vl_obj start_par end_par min_dis / dis_m_m ed_p ed_pt mid_p mid_pt mid_pt_vlo st_p st_pt)
  85.   (setq        st_p           start_par
  86.         ed_p           end_par
  87.         st_pt           (vlax-curve-getpointatparam vl_obj st_p)
  88.         ed_pt           (if (vlax-curve-getpointatparam vl_obj ed_p)
  89.                      (vlax-curve-getpointatparam vl_obj ed_p)
  90.                      (vlax-curve-getendpoint vl_obj)
  91.                    )
  92.         mid_pt           (mapcar '(lambda (x y) (/ (+ x y) 2.0)) st_pt ed_pt)
  93.         mid_pt_vlo (vlax-curve-getpointatparam vl_obj (/ (+ st_p ed_p) 2.0))
  94.         mid_p           (vlax-curve-getparamatpoint vl_obj mid_pt_vlo)
  95.         dis_m_m           (distance mid_pt_vlo mid_pt)
  96.   )
  97.   (if (> dis_m_m min_distacne)
  98.     (progn
  99.       (t1 vl_obj st_p mid_p min_dis)
  100.       (t1 vl_obj mid_p ed_p min_dis)
  101.     )
  102.     (setq pts (append pts (list mid_pt_vlo) (list ed_pt)))
  103.   )
  104. )
  105. ;________________________________________________________________________
  106. ;________________________________________________________________________
  107. ;________________________________________________________________________
  108. (princ "\n两条曲线最近距离及最近点__BY__WKAI__晓东CAD论坛")
  109. (princ "\n命令:tt")

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

使用道具 举报

发表于 2004-1-12 08:43:02 | 显示全部楼层
;;;T1函數看來是沒有甚麼用的?
;;;只要用分段數求點表即可取代T1
;;;疊代次數也應該可用更精確的數值取代
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-10-19 17:41:42 | 显示全部楼层
wkai :
麻烦你帮我写一个求曲线间最远距离及最远点的LISP程序,我主要用于排料,能方便的一次定宽度或长度,我不会编程,在论坛上到处求都没有解决,这有恳求你的帮忙了,再次表示谢意!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-11-3 22:21:23 | 显示全部楼层
最初由 LUCAS 发布
[B];;;T1函數看來是沒有甚麼用的?
;;;只要用分段數求點表即可取代T1
;;;疊代次數也應該可用更精確的數值取代 [/B]

的确,我测试了1楼和5楼的程序
5楼的叠代次数即便设置很高(如1000)也无法有效逼进最近距离,和用叠代次数30次求得的结果一样(以1楼测试长度为准)
另外,1楼程序在处理圆弧及其内的椭圆时,有bug,求得的不是最近距离
望能改进
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-10 08:50:13 | 显示全部楼层
为什么执行5楼的程序会出线“no function definition: VLAX-ENAME->VLA-OBJECT”的错误信息?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 07:27 , Processed in 0.484478 second(s), 65 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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