明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3316|回复: 9

[求助]怎样标注这个cad多边形的顶点坐标和各边长、多边形内角度数和面积?谢谢

[复制链接]
发表于 2005-1-24 16:37:00 | 显示全部楼层 |阅读模式
我碰到个问题,手里有一大批需要标注坐标、角度、边长和面积的dwg文件,我lisp学得不好,短时间还写不出来它,而现在却要急用。请您百忙之中帮个忙。谢谢!

本帖子中包含更多资源

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

x
发表于 2005-1-26 12:36:00 | 显示全部楼层

reply

把它标注成什么样子呢?
发表于 2005-1-29 22:17:00 | 显示全部楼层

回复

做好了吗?
发表于 2005-1-29 22:23:00 | 显示全部楼层

reply

写好了吗?
 楼主| 发表于 2005-1-29 22:23:00 | 显示全部楼层
还没呢!
发表于 2005-1-30 11:30:00 | 显示全部楼层
是否都是六边形?每点、每条边和每个角是否都要标注?
 楼主| 发表于 2005-1-30 23:13:00 | 显示全部楼层
不都是六边行.都要注.
发表于 2005-2-5 00:25:00 | 显示全部楼层

reply

未成形代码: (vl-load-com)
(defun c:bz ( / ent ename strtype lst0 lst1 lst2)
(setq ent (entsel "\nSelect an pline: "))
(while (not ent)
(setq ent (entsel "\nSelect an pline: "))
)
(setq ename (car ent))

(setq strtype (cdr (assoc 0 (entget ename))))
(if (or (= (strcase strtype) "LWPOLYLINE") (= (strcase strtype) "POLYLINE"))
(progn
(setq lst0 (getVertextList ename))
;求质心 ;标坐标
(foreach vertex lst0
(setq str (strcat "(" (rtos (car vertex) 2 2) "," (rtos (cadr vertex) 2 2) ")" ))
(setq ptt (append vertex '(0)))
(vlex-AddText str ptt "MC" "STANDARD" 0.25 1.0 0 (getvar "clayer") nil)
);foreach
;标边长
(setq i 0)
(setq p0 (car lst0))
(while (<= i (length lst0))
(setq p0 (nth i lst0)
p1 (nth (+ i 1) lst0))
(if (= i (length lst0))
(progn
(setq p0 (car lst0)
p1 (car (reverse lst0)))
);
);if (setq ang (RTD (angle p0 p1)))
(setq pos (list (/ (+ (car p0)(car p1)) 2) (/ (+ (cadr p0)(cadr p1)) 2) 0))
(setq dist (rtos (distance p0 p1) 2 2))
(vlex-AddText dist pos "MC" "STANDARD" 0.25 1.0 ang (getvar "clayer") nil)

(setq i (+ i 1))
);while

);progn
(alert "That's not a 'LWPOLYLINE' or 'POLYLINE' entity.")
);if

;

(princ)
) (defun getVertextList (ename / item lst coords)
(setq item (vlax-ename->vla-object ename))
;取得多义线坐标
(setq lst (vlax-safearray->list
(vlax-variant-value
(vlax-get-property item 'Coordinates))
)
)

(setq coords nil)
(if (= (vlax-get-property item 'ObjectName) "AcDb2dPolyline")
(progn
(while lst
(if (= coords nil)
(setq coords (list (list (nth 0 lst) (nth 1 lst))) )
(setq coords (append coords (list (list (nth 0 lst) (nth 1 lst)))))
)
(setq lst (cdr (cdr (cdr lst))))
)
)
)

(if (= (vlax-get-property item 'ObjectName) "AcDbPolyline")
(progn
(while lst
(if (= coords nil)
(setq coords (list (list (nth 0 lst) (nth 1 lst))) )
(setq coords (append coords (list (list (nth 0 lst) (nth 1 lst)))))
)
(setq lst (cdr (cdr lst)))
)
)
)
coords
)
;;; EXAMPLE: (vlex-AddText "ABC" p1 "MC" "STANDARD" 0.25 1.0 0 "TEXT" nil) ;;;
(defun vlex-AddText
(strTxt pt Just strStyle dblHgt dblWid dblRot strLay intCol / txtobj)
(cond
( (setq txtobj
(vla-AddText
(vlex-ActiveSpace)
strTxt
(if (not (member (strcase Just) '("A" "F")))
(vlax-3d-Point pt)
(vlax-3d-Point (car pt))
); endif
dblHgt ;; ignored if Just = "A" (aligned)
)
)
(vla-put-StyleName txtobj strStyle)
(vla-put-Layer txtobj strLay)
(if intCol (vla-put-Color txtobj intCol))
(setq Just (strcase Just)) ;; force to upper case for comparisons...

;; Left/Align/Fit/Center/Middle/Right/BL/BC/BR/ML/MC/MR/TL/TC/TR
;; Note that "Left" is not a normal default.
;;
;; ALIGNMENT TYPES...
;; AcAlignmentLeft=0
;; AcAlignmentCenter=1
;; AcAlignmentRight=2
;; AcAlignmentAligned=3
;; AcAlignmentMiddle=4
;; AcAlignmentFit=5
;; AcAlignmentTopLeft=6
;; AcAlignmentTopCenter=7
;; AcAlignmentTopRight=8
;; AcAlignmentMiddleLeft=9
;; AcAlignmentMiddleCenter=10
;; AcAlignmentMiddleRight=11
;; AcAlignmentBottomLeft=12
;; AcAlignmentBottomCenter=13
;; AcAlignmentBottomRight=14
;;
;; HORIZONTAL JUSTIFICATIONS...
;; AcHorizontalAlignmentLeft=0
;; AcHorizontalAlignmentCenter=1
;; AcHorizontalAlignmentRight=2
;; AcHorizontalAlignmentAligned=3
;; AcHorizontalAlignmentMiddle=4
;; AcHorizontalAlignmentFit=5
;;
;; VERTICAL JUSTIFICATIONS...
;; AcVerticalAlignmentBaseline=0
;; AcVerticalAlignmentBottom=1
;; AcVerticalAlignmentMiddle=2
;; AcVerticalAlignmentTop=3 (cond
( (= Just "L") ;; Left
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
( (= Just "C") ;; Center
(vla-put-Alignment txtobj 1)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
( (= Just "R") ;; Right
(vla-put-Alignment txtobj 2)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
( (= Just "A") ;; Alignment
(vla-put-Alignment txtobj 3)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
)
( (= Just "M") ;; Middle
(vla-put-Alignment txtobj 4)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
( (= Just "F") ;; Fit
(vla-put-Alignment txtobj 5)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
)
( (= Just "TL") ;; Top-Left
(vla-put-Alignment txtobj 6)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
( (= Just "TC") ;; Top-Center
(vla-put-Alignment txtobj 7)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
( (= Just "TR") ;; Top-Right
(vla-put-Alignment txtobj 8)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
( (= Just "ML");; Middle-Left
(vla-put-Alignment txtobj 9)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
( (= Just "MC");; Middle-Center
(vla-put-Alignment txtobj 10)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
( (= Just "MR");; Middle-Right
(vla-put-Alignment txtobj 11)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
( (= Just "BL");; Bottom-Left
(vla-put-Alignment txtobj 12)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
( (= Just "BC");; Bottom-Center
(vla-put-Alignment txtobj 13)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
( (= Just "BR");; Bottom-Right
(vla-put-Alignment txtobj 14)
(vla-put-TextAlignmentPoint txtobj (vlax-3d-point pt))
(vla-put-ScaleFactor txtobj dblWid)
(vla-put-Rotation txtobj (DTR dblRot))
)
)
(vla-Update txtobj)
(vlax-Release-Object txtobj)
(entlast)
);
); cond
) (vl-Load-COM);; load ActiveX support in Visual LISP ;;; *********************** < First Session > ***********************;;; ;;;***************************************************************************;;;
;;; MODULE: vlex-AcadObject () ;;;
;;; DESCRIPTION: Returns COM handle to application object ;;;
;;; ARGS: none ;;;
;;; EXAMPLE: (vlex-AcadObject) returns ActiveX object ;;;
;;;***************************************************************************;;; (setq *acad-object* nil) ; Initialize global variable
(defun vlex-AcadObject ()
(cond (*acad-object*) ; Return the cached object
(T
(setq *acad-object* (vlax-Get-Acad-Object))
)
)
) ;;;***************************************************************************;;;
;;; MODULE: vlex-ActiveDocument () ;;;
;;; DESCRIPTION: Returns active document object from application object ;;;
;;; ARGS: none ;;;
;;; EXAMPLE: (vlex-ActiveDocument) returns ActiveX object ;;;
;;;***************************************************************************;;; (setq *vlex-ActiveDocument* nil) ; Initialize global variable
(defun vlex-ActiveDocument ()
(cond (*vlex-ActiveDocument*) ; Return the cached object
(T
(setq *vlex-ActiveDocument* (vla-Get-ActiveDocument (vlex-AcadObject)))
)
)
) ;;;***************************************************************************;;;
;;; MODULE: vlex-ModelSpace () ;;;
;;; DESCRIPTION: Returns vlex-ModelSpace collection object of active document ;;;
;;; ARGS: none ;;;
;;; EXAMPLE: (vlex-ModelSpace) returns ActiveX object ;;;
;;;***************************************************************************;;; (setq *vlex-ModelSpace* nil) ; Initialize global variable
(defun vlex-ModelSpace ()
(cond (*vlex-ModelSpace*) ; Return the cached object
(T
(setq *vlex-ModelSpace* (vla-Get-ModelSpace (vlex-ActiveDocument)))
)
)
)
;;;***************************************************************************;;;
;;; MODULE: vlex-PaperSpace ;;;
;;; DESCRIPTION: Returns paper-space collection object of active document ;;;
;;; ARGS: none ;;;
;;; EXAMPLE: (vlex-PaperSpace) returns ActiveX object ;;;
;;;***************************************************************************;;; (setq *vlex-PaperSpace* nil) ; Intialize global variable
(defun vlex-PaperSpace ()
(cond (*vlex-PaperSpace*) ; Return the cached object
(T
(setq *vlex-PaperSpace* (vla-Get-PaperSpace (vlex-ActiveDocument)))
)
)
) (defun vlex-ActiveSpace ()
(if (= 1 (vlax-get-Property (vlex-ActiveDocument) 'ActiveSpace))
(vlex-ModelSpace)
(vlex-PaperSpace)
); endif
) (defun DTR (a) (* pi (/ a 180.0)) )
(defun RTD (a) (/ (* a 180.0) pi) )
发表于 2005-2-23 14:09:00 | 显示全部楼层
<BR>(vl-load-com)


(defun c:test ( / sset)<BR>         ; 选择所有POLYLINE和LWPOLYLINE<BR>         (setq sset (ssget "x" (list (cons -4 "&lt;or")(cons 0 "OLYLINE")(cons 0 "LWPOLYLINE")(cons -4 "or&gt;"))))<BR>         (if sset<BR>                         (progn<BR>                                         (setq slen (sslength sset)<BR>                                 idx 0)<BR>                                         (repeat slen<BR>        (setq en (ssname sset idx))<BR>        ;转换为Vla-Object类型对象<BR>        (setq plobj (MakeObject en))<BR>        <BR>        ;得到坐标表<BR>        (setq plvers (GetVertexs plobj)<BR>                                                 plvers (Settle plvers))


        (setq AcadObject (vlax-get-acad-object)<BR>                                                 AcadDocument (vla-get-ActiveDocument AcadObject)<BR>                                                 mSpace (vla-get-ModelSpace AcadDocument)<BR>        )<BR>        ;建立字体<BR>        (setq TextStyleColl (vlax-get-property AcadDocument 'TextStyles))<BR>        <BR>        (if (not (member "等线体" (ListCollectionMemberNames TextStyleColl)))<BR>                 (Progn<BR>                                 (command "style" "等线体" "宋体" 1 1 0 "N" "N")<BR>                 )<BR>        );if


        ; (1) - 标注面积<BR>        (vlax-put-property plobj 'Closed :vlax-True)<BR>        (vla-Update plobj)<BR>        (setq curves (vlax-make-safearray vlax-vbobject '(0 . 0)))<BR>        (vlax-safearray-fill curves (list plobj))<BR>        (setq regionObj (vlax-safearray-get-element<BR>                                 (vlax-variant-value (vla-AddRegion mSpace curves))<BR>                                 0<BR>                        )<BR>        )<BR>        (setq area (vlax-get-property regionObj 'Area))<BR>        ;质心坐标<BR>        (setq centroid (vlax-safearray-&gt;list (vlax-variant-value (vlax-get-property regionObj 'Centroid))))


        (command "text" "s" "等线体" centroid 1 0 (rtos area 2 2))<BR>        ;删除region对象<BR>;;;        (vlax-dump-object regionObj t)<BR>        (vlax-invoke-method regionObj 'Delete)<BR>        (vlax-release-object regionObj)<BR>        <BR>        ; (2) - 边长标注<BR>        (setq offsetObj1 (vla-Offset plobj 1)<BR>                                                 offsetObj2 (vla-Offset plobj -1)<BR>                                                 offsetObj1 (vlax-safearray-get-element<BR>                                 (vlax-variant-value offsetObj1)<BR>                                 0<BR>                        )<BR>                                                 area1 (vlax-get-property offsetObj1 'Area)<BR>                                                 offsetObj2 (vlax-safearray-get-element<BR>                                 (vlax-variant-value offsetObj2)<BR>                                 0<BR>                        )<BR>                                                 area2 (vlax-get-property offsetObj2 'Area)<BR>                                                 )<BR>        (if (&gt; area1 area)<BR>                 (setq offsetObj offsetObj1)<BR>                 (setq offsetObj offsetObj2)<BR>        )<BR>                 <BR>        (setq offplvers (GetVertexs offsetObj)<BR>                                                 offplvers (Settle offplvers)<BR>        )<BR>        (setq offplvers (append offplvers (list (car offplvers))))        ;为了起点与终点也标注


        ;删除offset对象<BR>        (vlax-invoke-method offsetObj1 'Delete)<BR>        (vlax-invoke-method offsetObj2 'Delete)


        ;视区<BR>        (setq range (Extents offplvers))<BR>        (command "zoom" "w" (car range) (cadr range))<BR>        <BR>        (setq pre (nth 0 offplvers)<BR>                                                 i 1)<BR>        (while (setq cur (nth i offplvers))<BR>                 (setq dist (distance pre cur)<BR>                ang (RTD (angle pre cur))<BR>                )<BR>                 (if (&gt; dist 1.00)<BR>                                 (progn<BR>                                                 (setq cen (list (/ (+ (car pre)(car cur)) 2) (/ (+ (cadr pre)(cadr cur)) 2)))<BR>                                                 (cond<BR>                ( (or (and (&gt;= ang 0) (&lt;= ang 90))<BR>                                                         (and (&gt;= ang 270) (&lt;= ang 360))<BR>                                                         )<BR>                         (command "text" "s" "等线体" "j" "MC" cen 1 ang (rtos dist 2 2))<BR>                 );<BR>                ( (and (&gt; ang 90) (&lt; ang 270))<BR>                         (setq ang (+ 180 ang))<BR>                         (command "text" "s" "等线体" "j" "MC" cen 1 ang (rtos dist 2 2))<BR>                 )<BR>                                                 );cond<BR>                                 );<BR>                 );if<BR>                 (setq pre cur<BR>                i (+ i 1))<BR>        );while<BR>        <BR>        ;<BR>        ; (3) - 角度标注<BR>        (setq firtpt (car plvers)<BR>                                                 lastpt (car (reverse plvers))<BR>                                                 i 0<BR>        )<BR>        (while (setq curpt (nth i plvers))<BR>                 (setq polarPnt (vla-PolarPoint<BR>                                         (vla-get-Utility AcadDocument)<BR>                                         (vlax-3d-point curpt)<BR>                                         (angle curpt centroid)<BR>                                         (* (distance curpt centroid) 0.125)) )<BR>                 (setq TextPoint         polarPnt)<BR>                 (setq AngleVertex (vlax-3d-point curpt))<BR>                 (cond<BR>                                 ( (= i 0)<BR>                                                 (setq FirstEndPoint (vlax-3d-point lastpt)<BR>                                         SecondEndPoint (vlax-3d-point (nth (+ i 1) plvers))<BR>                                         )<BR>                                         );<BR>                                 ( (= i (- (vl-list-length plvers) 1))<BR>                                                 (setq FirstEndPoint (vlax-3d-point firtpt)<BR>                                         SecondEndPoint (vlax-3d-point (nth (- (vl-list-length plvers) 2) plvers))<BR>                                         )<BR>                                         );<BR>                                 ( T<BR>                                                 (setq FirstEndPoint (vlax-3d-point (nth (- i 1) plvers))<BR>                                         SecondEndPoint (vlax-3d-point (nth (+ i 1) plvers))<BR>                                         )<BR>                                         )<BR>                 );cond<BR>                 (setq DimAnguarObj (vla-AddDimAngular mSpace AngleVertex FirstEndPoint SecondEndPoint TextPoint))<BR>                 (vlax-put-property DimAnguarObj 'TextHeight 0.6)<BR>                 (vla-Update DimAnguarObj)<BR>                 <BR>                 (setq i (+ i 1))<BR>        );while


        ; (4) - 添加坐标文本<BR>;;;        (vlax-dump-object plobj T)<BR>        (setq textWidth (abs (- (car (car range)) (car (cadr range)))))<BR>        ;文字Just方式<BR>        (foreach each offplvers<BR>                 (cond<BR>                                 ( (&lt; (abs (- (car each) (car centroid))) (* textWidth 0.25))<BR>                                                 (setq Just "MC")<BR>                                         );<BR>                                 ( (&gt; (car each) (car centroid))<BR>                                                 (setq Just "BL")<BR>                                         );<BR>                                 ( (&lt; (car each) (car centroid))<BR>                                                 (setq Just "BR")<BR>                                         );<BR>                 );cond<BR>                 (command "text" "s" "等线体" "j" Just each 0.8 0 (strcat "(" (rtos (car each) 2 2) "," (rtos (cadr each) 2 2) ")" ))<BR>                 (setq elast (entlast)<BR>                elast (MakeObject elast)<BR>                )<BR>                 (vlax-put-property elast 'ScaleFactor 0.8)<BR>                 (vla-Update elast)<BR>        );foreach<BR>        <BR>        <BR>        <BR>        ;<BR>        (setq idx (+ idx 1))<BR>                                         );repeat<BR>                         );progn<BR>         );if<BR>;;;         (alert (itoa (sslength sset)))<BR>)


; Converts an ENAME type into a Vla-Object<BR>(defun MakeObject (entname)<BR>         (cond<BR>                         ( (= (type entname) 'ENAME)<BR>                                         (vlax-ename-&gt;vla-object entname)<BR>                         )<BR>                         ( (= (type entname) 'VLA-OBJECT)<BR>                                         entname<BR>                         )<BR>         )<BR>)


; 得到POLYLINE或LWPOLYLINE的坐标表<BR>(defun GetVertexs (entname / tmplst coords)<BR>         (setq plobj (MakeObject entname)<BR>        coords '())<BR>         (setq pltyp (vlax-get-property plobj 'ObjectName))<BR>         (if (member pltyp '("AcDbPolyline" "AcDb2dPolyline"))<BR>                         (progn<BR>                                         (setq tmplst (vlax-safearray-&gt;list (vlax-variant-value (vlax-get-property plobj 'Coordinates))))<BR>                                         <BR>                                         (cond<BR>        ( (= pltyp "AcDb2dPolyline")        olyline<BR>                 (while tmplst<BR>                                 (setq coords (append coords (list (list (car tmplst) (cadr tmplst)))))<BR>                                 (setq tmplst (cdddr tmplst))<BR>                 );while<BR>                                                         );<BR>        ( (= pltyp "AcDbPolyline")        ;LWPolyline<BR>                 (while tmplst<BR>                                 (setq coords (append coords (list (list (car tmplst) (cadr tmplst)))))<BR>                                 (setq tmplst (cddr tmplst))                                 <BR>                 );while<BR>                                                         );        <BR>                                         );cond<BR>                                         <BR>                         );progn<BR>         );if<BR>         coords<BR>)


(defun Settle (verlst / ret pre i)<BR>         ;如果起点终点坐标相同,从坐标表中除去起点<BR>         (if (vl-every '= (car verlst) (car (reverse verlst)))<BR>                         (setq verlst (cadr verlst))<BR>         );if<BR>         ;除去重复的结点<BR>         (setq ret (list (nth 0 verlst))<BR>        pre (nth 0 verlst)<BR>                                                         i 1)<BR>         (while (setq cur (nth i verlst))<BR>                         (if (not (vl-every '= cur pre))<BR>                                         (setq ret (append ret (list cur)))<BR>                         );if<BR>                         ;<BR>                         (setq i (+ i 1)<BR>                 pre cur)<BR>         );while<BR>         ret<BR>)


;返回集合对象中所有成员名称表<BR>(defun ListCollectionMemberNames(collection / itemname out)<BR>         (setq out '())<BR>         (vlax-for each collection<BR>                         (if (vlax-property-available-p each 'Name)<BR>                                         (progn<BR>        (setq itemname (vlax-get-property each 'Name)<BR>                                                 out (cons itemname out)<BR>        )<BR>                                         )<BR>                         )<BR>         )<BR>         (reverse out)<BR>)


;角度转换<BR>(defun DTR (a) (* pi (/ a 180.0)) )<BR>(defun RTD (a) (/ (* a 180.0) pi) )


;求坐标表的最大最小值<BR>(defun Extents (plist /)<BR>         (list<BR>                         (apply 'mapcar (cons 'min plist))<BR>                         (apply 'mapcar (cons 'max plist))<BR>         )<BR>)


本帖子中包含更多资源

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

x
 楼主| 发表于 2005-2-23 15:47:00 | 显示全部楼层
多谢!!!多谢!!!鲜花!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-29 18:32 , Processed in 0.200319 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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