怎样判断两条多段线的采集方向是否相同?
如题,怎样判断两条多段线的采集方向是否相同?只要判断是否大致相同就可以了... 取之明经,用之明经(defun c:ttt()
(setq en (car (entsel)))
(setq ptlist (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget en))))
(GE_WhatPoly ptlist)
)
(defun GE_WhatPoly (ptlist / nverts cnt area tmp pt1 pt2)
(setq
cnt 0
nverts (length ptlist)
area 0.0
)
(while (< cnt (1- nverts))
(setq
pt1 (nth cnt ptlist)
pt2 (nth (1+ cnt) ptlist)
area (+ area (* (cadr pt1) (car pt2)))
cnt (1+ cnt)
)
)
(setq
pt1 (nth (1- nverts) ptlist)
pt2 (nth 0 ptlist)
area (+ area (* (cadr pt1) (car pt2)))
cnt 0
tmp 0.0
)
(while (< cnt (1- nverts))
(setq
pt1 (nth cnt ptlist)
pt2 (nth (1+ cnt) ptlist)
tmp (+ tmp (* (cadr pt2) (car pt1)))
cnt (1+ cnt)
)
)
(setq
pt1 (nth 0 ptlist)
pt2 (nth (1- nverts) ptlist)
tmp (+ tmp (* (cadr pt1) (car pt2)))
area (* 0.5 (- area tmp))
)
(cond
((< area 0.0) (setq area -1) )
((> area 0.0) (setq area1) )
(T (setq area 0) )
)
area
) 采集方向是什么意思?如果是顺逆时针的话,论坛上判断顺逆的lsp很多。 跟着了解一下..... 采集方向不是顺逆时针,类似于水流方向的意思 果然可以。
页:
[1]