{"id":508,"date":"2010-06-02T23:53:55","date_gmt":"2010-06-02T15:53:55","guid":{"rendered":"https:\/\/www.highflybird.com\/blog\/?p=228"},"modified":"2020-02-29T22:57:19","modified_gmt":"2020-02-29T14:57:19","slug":"%e7%82%b9%e9%9b%86%e7%9a%84%e7%9b%b4%e5%be%84%e5%92%8c%e6%9c%80%e5%b0%8f%e5%8c%85%e5%9b%b4%e7%9f%a9%e5%bd%a2","status":"publish","type":"post","link":"https:\/\/www.highflybird.com\/blog\/?p=508","title":{"rendered":"\u70b9\u96c6\u7684\u76f4\u5f84\u548c\u6700\u5c0f\u5305\u56f4\u77e9\u5f62"},"content":{"rendered":"<p>\u70b9\u96c6\u7684\u6700\u5c0f\u5305\u56f4\u77e9\u5f62\u548c\u70b9\u96c6\u7684\u76f4\u5f84\u3002\u6700\u5c0f\u5305\u56f4\u76d2\u6307\u7684\u662f\u80fd\u5305\u56f4\u4e00\u4e2a\u591a\u8fb9\u5f62\u6216\u8005\u4e00\u4e9b\u591a\u8fb9\u5f62\u7684\u6700\u5c0f\u9762\u79ef\uff08\u53ef\u80fd\u5468\u957f\uff09\u7684\u8fd9\u6837\u7684\u4e00\u4e2a\u77e9\u5f62\u3002<\/p>\n<p>\u4e0b\u9762\u662f\u5176LISP\u4ee3\u7801\u7684\u5b9e\u73b0\uff1a<\/p>\n<p><!--more--><\/p>\n<pre lang=\"lisp\" line=\"1\" escaped=\"true\">;;;The procedure for Test\n(defun C:test (\/ PP PTLIST SEL T0 n)\n  (princ \"n\u547d\u4ee4\u662ftest(The command is Test).\")\n  (princ \"n\u8bf7\u9009\u62e9\u70b9\u3001\u66f2\u7ebf\u7c7b\u7269\u4f53\u6216\u8005\u56fe\u5757\")\n  (setq sel (ssget '((0 . \"POINT,LWPOLYLINE,LINE,SPLINE,ARC,CIRCLE,ELLIPSE,INSERT\"))))  ;select curve or point\n  (initget 7)\n  (setq n (getint \"n\u53d6\u6837\u7cbe\u5ea6(100-2000):\"))\n  (if sel                                                         \n    (progn\n      (setq ptlist (getpt sel n))                                       ;construct the set of points\n      (setq ptlist (Graham-scan ptlist))                                ;construct the CCW Hull of this set.\n      (if (&lt;= (det (car ptlist) (cadr ptlist) (caddr ptlist)) 0.0)      ;ensure the hull is CCW.\n        (setq ptlist (reverse ptlist))                                  ;if it isn't CCW,then reverse it\n      ) \n      (setq t0 (getvar \"TDUSRTIMER\"))                                   ;The start time of this algorithm\n      (setq pp (car (MinAreaRectangle ptlist)))                         ;start calculating\n      (princ \"nIt takes :\")                                            \n      (princ (* (- (getvar \"TDUSRTIMER\") t0) 86400))                    ;The End time\n      (princ \"seconds\")\n      (if pp\n        (make-poly pp)                                                  ;draw rectangle.\n      )\n    )\n  )\n  (princ)\n)\n;;;=======================================================\n;;;Function : Find the minimum area of encasing rectangle.\n;;;Arguments : A CCW HULL                                 \n;;;Return: The Four points of Rectangle and its Area      \n;;;=======================================================\n(defun MinAreaRectangle (ptlist      \/     AA    AI    BB    D1\n                         D2    EDGE  I     I1X   I1Y   I2X   I2Y\n                         IL    INF   IX    IY    J1    J2    MINA\n                         MINH  MINW  NORH  NORM  PI1   PI2   PTI0\n                         PTI1  PTI2  PTJ1  PTK1  PTM1  PTS1  PTS2\n                         PTS3  PTS4  REC1  REC2  REC3  REC4  RECT\n                         VECH  VECL  VJ12  VM12\n                        )\n  (setq INF 1e309)                                                      \n  (setq minA INF)                                                       ;Initiating the Minimum area is infinite\n  (setq pti0 (car ptlist))                                              ;the first point of Hull.\n  (setq pts1 (append ptlist (list pti0)))                               ;add the first point at back of Hull\n  (setq pts2 (cdr (append ptlist ptlist (list pti0))))                  ;Construct a loop for the hull\n  (setq i 0)                                                            \n\n  ;;Find area of encasing rectangle anchored on each edge.\n  (repeat (length ptlist)\n    (setq pi1 (car   pts1)                                              \n          pi2 (cadr  pts1)\n          i1x (car   pi1)\n          i1y (cadr  pi1)\n          i2x (car   pi2)\n          i2y (cadr  pi2)\n          ix  (- i2x i1x)\n          iy  (- i2y i1y)\n          il  (distance (list ix iy) '(0.0 0.0))\n    )\n\n    ;;\u5bfb\u627e\u6700\u5de6\u70b9\n    ;;Find a vertex on on first perpendicular line of support\n    (while (&gt; (DOTPR ix iy pts2) 0.0)\n      (setq pts2 (cdr pts2))\n    )\n\n    ;;\u5bfb\u627e\u6700\u4e0a\u70b9\n    ;;Find a vertex on second perpendicular line of suppoer\n    (if (= i 0)\n      (setq pts3 pts2)\n    )\n    (while (&gt; (CROSSPR ix iy pts3) 0.0)\n      (setq pts3 (cdr pts3))\n    )\n\n    ;;\u5bfb\u627e\u6700\u53f3\u70b9\n    ;;Find a vertex on second perpendicular line of suppoer\n    (if (= i 0)\n      (setq pts4 pts3)\n    )\n    (while (&lt; (DOTPR ix iy pts4) 0.0)\n      (setq pts4 (cdr pts4))\n    )\n\n    ;;\u5f97\u51fa\u4e86\u6bcf\u8fb9\u7684\u77e9\u5f62\n    ;;Find distances between parallel and perpendicular lines of support\n    (cond\n      ((equal i1x i2x 1e-4)                                             ;\u5982\u679c\u8fb9\u4e24\u70b9\u7684X\u503c\u76f8\u540c\n       (setq d1 (- (caar pts3) i1x)                                     ;\u90a3\u4e48\u77e9\u5f62\u7684\u9ad8\u5c31\u662f\u6700\u4e0a\u70b9\u4e0e\u8fb9\u7684X\u7684\u5dee\u503c\n             d2 (- (cadar pts4) (cadar pts2))                           ;\u77e9\u5f62\u7684\u5bbd\u5c31\u662f\u6700\u5de6\u548c\u6700\u53f3\u7684Y\u7684\u5dee\u503c\n       )\n      )\n      ((equal i1y i2y 1e-4)                                             ;\u5982\u679c\u8fb9\u4e24\u70b9\u7684Y\u503c\u76f8\u540c\n       (setq d1 (- (cadar pts3) i1y)                                    ;\u90a3\u4e48\u77e9\u5f62\u7684\u9ad8\u5c31\u662f\u6700\u4e0a\u70b9\u4e0e\u8fb9\u7684Y\u7684\u5dee\u503c\n             d2 (- (caar pts4) (caar pts2))                             ;\u77e9\u5f62\u7684\u5bbd\u5c31\u662f\u6700\u5de6\u548c\u6700\u53f3\u7684X\u7684\u5dee\u503c\n       )\n      )\n\n      (T\n       (setq aa (det pi1 pi2 (car pts3)))                               ;\u5426\u5219\u8ba1\u7b97\u8fb9\u548c\u6700\u4e0a\u70b9\u6784\u6210\u7684\u9762\u79ef\u7684\u4e8c\u500d(det)\n       (setq d1 (\/ aa il))                                              ;\u9ad8\u5c31\u662fdet\u503c\u9664\u4ee5\u8fb9\u957f\n       (setq j1 (car pts2))                                             ;\u6700\u53f3\u8fb9\u70b9\n       (setq j2 (list (- (car j1) iy) (+ (cadr j1) ix)))                ;\u901a\u8fc7\u6700\u53f3\u8fb9\u70b9\u7684\u5782\u76f4\u8fb9\u7684\u70b9\n       (setq bb (det j1 j2 (car pts4)))                                 ;\u6700\u53f3\u8fb9\u70b9\uff0c\u4e0a\u9762\u7684\u70b9\u548c\u6700\u5de6\u8fb9\u7684\u70b9\n       (setq d2 (\/ bb il))                                              ;\u8fd9\u4e09\u70b9\u7684det\u9664\u4ee5\u8fb9\u957f\u5c31\u662f\u5bbd\n      )\n    )\n\n    ;;\u8ba1\u7b97\u77e9\u5f62\u7684\u9762\u79ef\uff0c\u5fc5\u8981\u65f6\u66f4\u65b0\u6700\u5c0f\u9762\u79ef\n    ;;Compute area of encasing rectangle anchored on current edge.\n    ;;if the area is smaller than the old Minimum area,then update,and record the width,height and five points.\n    (setq Ai (abs (* d1 d2)))                                           ;\u9762\u79ef\u5c31\u662f\u9ad8\u548c\u5bbd\u7684\u79ef\n    (if (&lt; Ai MinA)                                                     ;\u5982\u679c\u9762\u79ef\u5c0f\u4e8e\u5148\u524d\u7684\u6700\u5c0f\u9762\u79ef\uff0c\u5219\u8bb0\u5f55\uff1a\n      (setq MinA Ai                                                     ;\u66f4\u65b0\u6700\u5c0f\u9762\u79ef\n            MinH d1                                                     ;\u6700\u5c0f\u9762\u79ef\u7684\u9ad8\n            MinW d2                                                     ;\u6700\u5c0f\u9762\u79ef\u7684\u5bbd\n            pti1 pi1                                                    ;\u6700\u5c0f\u9762\u79ef\u7684\u8fb9\u7684\u7b2c\u4e00\u4e2a\u7aef\u70b9\n            pti2 pi2                                                    ;\u6700\u5c0f\u9762\u79ef\u7684\u8fb9\u7684\u7b2c\u4e8c\u4e2a\u7aef\u70b9\n            ptj1 (car pts2)                                             ;\u6700\u53f3\u8fb9\u7684\u70b9\n            ptk1 (car pts3)                                             ;\u6700\u4e0a\u9762\u7684\u70b9\n            ptm1 (car pts4)                                             ;\u6700\u5de6\u8fb9\u7684\u70b9\n      )\n    )\n    (setq pts1 (cdr pts1))                                              ;\u68c0\u6d4b\u4e0b\u4e00\u6761\u8fb9\n    (setq i (1+ i))                                                     ;\u8ba1\u6570\u5668\u52a0\u4e00\n  )\n\n  ;;according to the result ,draw the Minimum Area Rectangle\n  (setq edge (mapcar '- pti2 pti1))                                     ;\u6700\u5c0f\u9762\u79ef\u7684\u8fb9\u5bf9\u5e94\u7684\u5411\u91cf\n  (setq VecL (distance edge '(0.0 0.0)))                                ;\u6700\u5c0f\u9762\u79ef\u7684\u8fb9\u7684\u957f\u5ea6\n  (setq NorH (abs (\/ MinH VecL)))                                       ;\u8fd9\u8fb9\u7684\u6cd5\u7ebf\n  \n  (setq Norm (list (- (cadr edge)) (car edge)))                         ;\u8fd9\u8fb9\u7684\u5782\u76f4\u5411\u91cf\n  (setq vj12 (mapcar '+ ptj1 Norm))                                     ;\u901a\u8fc7\u6700\u53f3\u70b9\u7684\u5782\u76f4\u5411\u91cf\n  (setq vm12 (mapcar '+ ptm1 Norm))                                     ;\u901a\u8fc7\u6700\u5de6\u70b9\u7684\u5782\u76f4\u5411\u91cf\n  (setq vecH (mapcar '* (list NorH NorH) Norm))                         \n\n  (setq rec1 (inters pti1 pti2 ptj1 vj12 nil))                          ;\u77e9\u5f62\u7684\u7b2c\u4e00\u70b9\n  (setq rec4 (inters pti1 pti2 ptm1 vm12 nil))                          ;\u77e9\u5f62\u7684\u7b2c\u56db\u70b9\n  (setq rec2 (mapcar '+ rec1 vecH))                                     ;\u77e9\u5f62\u7684\u7b2c\u4e8c\u70b9\n  (setq rec3 (mapcar '+ rec4 vecH))                                     ;\u77e9\u5f62\u7684\u7b2c\u4e09\u70b9\n  (setq rect (list Rec1 rec2 rec3 rec4))                                ;\u77e9\u5f62\u7684\u70b9\u8868\n  (cons rect MinA)                                                      ;\u8fd4\u56de\u8fd9\u4e2a\u77e9\u5f62\u7684\u70b9\u8868\u548c\u6700\u5927\u8ddd\u79bb\n)\n\n;;;========================================\n;;;\u6c42\u51f8\u58f3\u7684\u76f4\u5f84\u7684\u7a0b\u5e8f                      \n;;;\u53c2\u6570\uff1a\u9006\u65f6\u9488\u7684\u51f8\u58f3 H-------\u6ce8\u610f\u9006\u65f6\u9488!!!\n;;;\u8fd4\u56de\u503c: \u76f4\u5f84\u7684\u4e24\u4e2a\u7aef\u70b9\u548c\u76f4\u5f84 Pair . MaxD\n;;;========================================\n(defun Max-distance (H \/ D M MAXD P PAIR Q U V W)\n  (setq Q (cdr (append H H (list (car H)))))                            ;\u6784\u9020\u4e00\u4e2a\u9996\u5c3e\u5faa\u73af\u7684\u51f8\u96c6,\u4e14\u8d77\u59cb\u70b9\u4e3a\u51f8\u58f3\u7684\u7b2c\u4e8c\u70b9\n  (setq MaxD 0.0)                                                       ;\u521d\u59cb\u5316\u6700\u5c0f\u8ddd\u79bb\u4e3a0\n  (foreach U H                                                          ;\u4f9d\u6b21\u68c0\u67e5\u51f8\u58f3\u7684\u8fb9\n    (setq V (car Q))                                                    ;\u5faa\u73af\u96c6\u7684\u7b2c\u4e00\u70b9\n    (setq W (cadr Q))                                                   ;\u5faa\u73af\u96c6\u7684\u7b2c\u4e8c\u70b9\n    (setq M (mid-pt V W))                                               ;\u8fd9\u4e24\u70b9\u7684\u4e2d\u70b9\n    (while (&gt; (dot M U V) 0.0)                                          ;\u5982\u679c\u5939\u89d2\u5c0f\u4e8e90\u5ea6\uff08\u5373\u70b9\u79ef\u5927\u4e8e0\uff09\n      (setq Q (cdr Q))                                                  ;\u5faa\u73af\u96c6\u63a8\u8fdb\n      (setq V (car Q))                                                  ;\u53d6\u4e0b\u4e00\u70b9\n      (setq W (cadr Q))                                                 ;\u4e0b\u4e0b\u4e00\u70b9\n      (setq M (mid-pt V W))                                             ;\u8fd9\u4e24\u70b9\u7684\u4e2d\u70b9\n    )\n    (setq D (distance U V))                                             ;\u8ba1\u7b97\u8fd9\u65f6\u7684\u6700\u5927\u8ddd\u79bb\n    (if (&gt; D MaxD)                                                      ;\u5982\u679c\u5927\u4e8e\u524d\u9762\u7684\u6700\u5927\u8ddd\u79bb\n      (setq MaxD D                                                      ;\u5c31\u66ff\u6362\u524d\u9762\u7684\u6700\u5927\u8ddd\u79bb\n            Pair (list U V)                                             ;\u5e76\u8bb0\u5f55\u8fd9\u5bf9\u70b9\n      )\n    )\n  )\n  (cons Pair MaxD)                                                      ;\u8fd4\u56de\u8fd9\u5bf9\u70b9\u548c\u6700\u5927\u8ddd\u79bb\n)\n\n;;;==================\n;;;Graham\u626b\u63cf\u6cd5\u6c42\u51f8\u5305\n;;;==================\n(defun Graham-scan (ptlist \/ hullpt maxXpt sortPt P Q)\n  (if (&lt; (length ptlist) 3)                                             ;3\u70b9\u4ee5\u4e0b\n    ptlist                                                              ;\u662f\u672c\u96c6\u5408\n    (progn\n      (setq maxXpt (assoc (apply 'max (mapcar 'car ptlist)) ptlist))    ;\u6700\u53f3\u8fb9\u7684\u70b9\n      (setq sortPt (sort-by-angle-distance ptlist maxXpt))              ;\u5206\u7c7b\u70b9\u96c6\n      (setq hullPt (list (cadr sortPt) maxXpt))                         ;\u5f00\u59cb\u7684\u4e24\u70b9      \n      (foreach n (cddr sortPt)                                          ;\u4ece\u7b2c3\u70b9\u5f00\u59cb\n        (setq hullPt (cons n HullPt))                                   ;\u628aPi\u52a0\u5165\u5230\u51f8\u96c6\n        (setq P (cadr hullPt))                                          ;Pi-1\n        (setq Q (caddr hullPt))                                         ;Pi-2\n        (while (and q (&gt; (det n P Q) -1e-6))                            ;\u5982\u679c\u5de6\u8f6c\n          (setq hullPt (cons n (cddr hullPt)))                          ;\u5220\u9664Pi-1\u70b9\n          (setq P (cadr hullPt))                                        ;\u5f97\u5230\u65b0\u7684Pi-1\u70b9\n          (setq Q (caddr hullPt))                                       ;\u5f97\u5230\u65b0\u7684Pi-2\u70b9\n        )\n      )\n      (reverse hullpt)                                                  ;\u8fd4\u56de\u51f8\u96c6\n    )\n  )\n)\n\n;;;\u4e2d\u70b9\u51fd\u6570\n(defun mid-pt (p1 p2)\n  (list\n    (* (+ (car p1) (car p2)) 0.5)\n    (* (+ (cadr p1) (cadr p2)) 0.5)\n  )\n)\n\n;;;\u4ee5\u67d0\u70b9\u4e3a\u57fa\u70b9\uff0c\u6309\u7167\u89d2\u5ea6\u548c\u8ddd\u79bb\u5206\u7c7b\u70b9\u96c6\n(defun sort-by-angle-distance (ptlist pt \/)\n  (vl-sort\n    ptlist\n    (function\n      (lambda (e1 e2 \/ ang1 ang2)\n        (setq ang1 (angle pt e1))\n        (setq ang2 (angle pt e2))\n        (if (= ang1 ang2)\n          (&lt; (distance pt e1) (distance pt e2))\n          (&lt; ang1 ang2)\n        )\n      )\n    )\n  )\n)\n\n\n;;;\u70b9\u79ef= x1*x2 + y1*y2\n(defun DOTPR (ix iy pts \/ pt1 pt2)\n  (setq pt1 (car pts))\n  (setq pt2 (cadr pts))\n  (+ (* ix (- (car pt2) (car pt1)))\n     (* iy (- (cadr pt2) (cadr pt1)))\n  )\n)\n\n;;;\u53c9\u79ef= x1*y2 - x2*y1\n(defun CROSSPR (ix iy pts \/ pt1 pt2)\n  (setq pt1 (car pts))\n  (setq pt2 (cadr pts))\n  (- (* ix (- (cadr pt2) (cadr pt1)))\n     (* iy (- (car pt2) (car pt1)))\n  )\n)\n\n;;;\u5b9a\u4e49\u4e09\u70b9\u7684\u884c\u5217\u5f0f,\u5373\u4e09\u70b9\u4e4b\u500d\u9762\u79ef\n(defun det (p1 p2 p3 \/ x2 y2)\n  (setq x2 (car p2)\n        y2 (cadr p2)\n  )\n  (- (* (- x2 (car p3)) (- y2 (cadr p1)))\n     (* (- x2 (car p1)) (- y2 (cadr p3)))\n  )\n)\n\n;;;\u5b9a\u4e49\u5411\u91cf\u7684\u70b9\u79ef\u51fd\u6570\n(defun dot (p1 p2 p3 \/ x1 y1)\n  (setq x1 (car p1)\n        y1 (cadr p1)\n  )\n  (+ (* (- (car p2) x1) (- (car p3) x1))\n     (* (- (cadr p2) y1) (- (cadr p3) y1))\n  )\n)\n;;;\u53d6\u70b9\u51fd\u65702\n(defun getpt (ss n \/ i s a b c d e)\n  (setq i 0)\n  (if ss\n    (repeat (sslength ss)\n      (setq a (ssname ss i))\n      (setq b (entget a))\n      (setq e (cdr (assoc 0 b)))\n      (cond\n        ( (= e \"LWPOLYLINE\")\n          (setq c (get-pline-vertexs a n))\n          (setq s (append c s))\n        )\n\n        ( (= e \"LINE\")\n          (setq c (cdr (assoc 10 b)))\n          (setq d (cdr (assoc 11 b)))\n          (setq c (list (car c) (cadr c)))\n          (setq d (list (car d) (cadr d)))\n          (setq s (cons c s))\n          (setq s (cons d s))\n        )\n        ( (= e \"POINT\")\n          (setq c (cdr (assoc 10 b)))\n          (setq c (list (car c) (cadr c)))\n          (setq s (cons c s))\n        )\n        (t \n          (setq c (get-spline-vertexs a n))\n          (setq s (append c s))\n        )\n      )\n      (setq i (1+ i))\n    )\n  )\n  s\n)\n\n;;\u53d6\u5f97\u591a\u8fb9\u5f62\u9876\u70b9\n(defun get-LWpolyline-vertexs (DXF \/ lst)\n  (foreach n DXF\n    (if (= (car n) 10)\n      (setq lst (cons (cdr n) lst))\n    )\n  )\n  (reverse lst)\n)\n\n(defun get-3dpolyline-vertexs ( ent \/ p )\n  (if (and (setq ent (entnext ent)) (setq p (cdr (assoc 10 (entget ent)))))\n    (cons p (get-3dpolyline-vertexs ent))\n  )\n  p\n)\n\n;;;\u53d6\u5f97\u6837\u6761\u66f2\u7ebf\u7684\u70b9\n(defun get-spline-vertexs (ent n \/ DIST ENDPAR I LEN OBJ PT PTS SEG)\n  (setq obj (vlax-ename-&gt;vla-object ent))\n  (setq endpar  (vlax-curve-getEndParam obj))\n  (setq len (vlax-curve-getDistAtParam obj endpar))\n  (setq seg (\/ len n))\n  (setq dist 0)\n  (while (&lt; dist len)   \n    (setq pt (vlax-curve-getPointAtDist obj dist))\n    (setq pts (cons pt pts))\n    (setq dist (+ seg dist))   \n  )\n  (if (= (vla-get-closed obj) :vlax-false)\n    (setq pt (vlax-curve-getEndPoint obj)\n          pts (cons pt pts)\n    )\n  )\n  (reverse pts)\n)\n\n;;;\u53d6\u5f97\u542b\u6709\u5706\u5f27\u7684\u591a\u6bb5\u7ebf\u7684\u70b9\n(defun get-pline-vertexs (ent n \/ BLG DIST ENDPAR I L1 L2 L3 LI OBJ PT PTS VEXNUM)\n  (setq obj (vlax-ename-&gt;vla-object ent))\n  (setq endpar (vlax-curve-getEndParam obj))\n  (setq vexNum (fix endPar))\n  (setq pts nil)\n  (setq i 0)\n  (repeat vexNum\n    (setq pt (vlax-curve-getPointAtParam obj i))\n    (setq pts (cons pt pts))\n    (setq blg (vla-getbulge obj i))\n    (if (\/= blg 0.0)\n      (progn\n        (setq l1 (vlax-curve-getDistAtParam obj i))\n        (setq l2 (vlax-curve-getDistAtParam obj (1+ i)))\n        (setq l3 (- l2 l1))\n        (setq li (\/ l3 n))\n        (setq dist l1)\n        (repeat (1- n)\n          (setq dist (+ dist li))\n          (setq pt (vlax-curve-getPointAtDist obj dist))\n          (setq pts (cons pt pts))\n        )\n      )\n    )\n    (setq i (1+ i))\n  )\n  (if (= (vla-get-closed obj) :vlax-false)\n    (setq pt (vlax-curve-getEndPoint obj)\n          pts (cons pt pts)\n    )\n  )\n  pts\n)\n\n;;;\u7ed8\u5236\u591a\u6bb5\u7ebf\n(defun Make-Poly (pp \/ x)\n  (entmake                                                              ;\u753b\u51f8\u5305\n    (append\n      '((0 . \"LWPOLYLINE\")\n        (100 . \"AcDbEntity\")\n        (100 . \"AcDbPolyline\")\n       )\n      (list (cons 90 (length pp)))                                      ;\u9876\u70b9\u4e2a\u6570\n      (mapcar\n        (function (lambda (x) (cons 10 x)))\n        pp\n      )                                                                 ;\u591a\u6bb5\u7ebf\u9876\u70b9\n      (list (cons 70 1))                                                ;\u95ed\u5408\u7684\n      (list (cons 62 1))                                                ;\u7ea2\u8272\u7684\n    )\n  )\n)\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u70b9\u96c6\u7684\u6700\u5c0f\u5305\u56f4\u77e9\u5f62\u548c\u70b9\u96c6\u7684\u76f4\u5f84\u3002\u6700\u5c0f\u5305\u56f4\u76d2\u6307\u7684\u662f\u80fd\u5305\u56f4\u4e00\u4e2a\u591a\u8fb9\u5f62\u6216\u8005\u4e00\u4e9b\u591a\u8fb9\u5f62\u7684\u6700\u5c0f\u9762\u79ef\uff08\u53ef\u80fd\u5468\u957f\uff09\u7684\u8fd9\u6837\u7684\u4e00<\/p>\n<p class=\"more-link\"><a href=\"https:\/\/www.highflybird.com\/blog\/?p=508\" class=\"themebutton2\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[9],"tags":[26],"class_list":["post-508","post","type-post","status-publish","format-standard","hentry","category-programming","tag-26"],"_links":{"self":[{"href":"https:\/\/www.highflybird.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.highflybird.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.highflybird.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.highflybird.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.highflybird.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=508"}],"version-history":[{"count":0,"href":"https:\/\/www.highflybird.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/508\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.highflybird.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.highflybird.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.highflybird.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}