sunny_w 发表于 2004-5-8 13:53:00

多义线如果方向是顺时针的,其各点坐标的关系是怎样的

多义线如果方向是顺时针的,其各点坐标的关系是怎样的,既如何判断一条多义线是顺时针的或逆时针的?请帮忙,谢谢

alin 发表于 2004-5-8 16:04:00

如果是S形的话,是顺时针还是逆时针?

redearth 发表于 2004-5-8 16:18:00

多一线如果是封闭的,那么提取顶点是按逆时钟排列的

sunny_w 发表于 2004-5-8 16:54:00

不考虑S这么特殊的,只是单线或闭合线。


楼上说的多一线封闭的,提取的顶点按逆时钟排列,是说提取出来的点表中的点排列是逆时针的吗?没太明白您的意思

绝情一剑 发表于 2004-5-8 17:07:00

要是这样的话只需要判断PLINE的第二个点的坐标是否比第一个点的X轴的坐标大或者小就行了

sunny_w 发表于 2004-5-9 09:48:00

这样判断不行,比如闭和区域第二点的坐标不论怎样,都可能是逆或着是顺时针。

雪山飞狐_lzh 发表于 2004-5-9 14:28:00

从中间找一个点,向各顶点做直线,求角度

alin 发表于 2004-5-9 14:29:00

如果是简单的平面封闭多义线,应该有办法。

thankyou 发表于 2004-5-9 18:16:00

不一定哦

redearth发表于2004-5-8 16:18:00static/image/common/back.gif多一线如果是封闭的,那么提取顶点是按逆时钟排列的

<BR><b>不一定哦</b>

alin 发表于 2004-5-9 23:01:00

(defun C:test(/ doc utility mspace ss fd ang offsetObj plineObj pt0 pt1 intpoints)<BR>       (setq doc (vla-get-activeDocument (vlax-get-acad-object)))<BR>       (setq utility (vla-get-utility doc))<BR>       (setq mspace (vla-get-modelspace doc))<BR>       (if (setq ss (ssget ":s" '((0 . "*POLYLINE"))))<BR>               (progn<BR>                       (setq plineObj (vlax-ename-&gt;vla-object (ssname ss 0)))<BR>                       (setq fd (vlax-curve-getFirstDeriv plineObj 0.5))<BR>                       (setq ang (atan (/ (cadr fd) (car fd))))<BR>                       (setq offsetplineObj (car (vlax-safearray-&gt;list<BR>                                       (vlax-variant-value<BR>                                                       (vla-offset plineObj 0.0001)))))<BR>                       (setq pt0 (vlax-3d-point (vlax-curve-getPointAtParam plineObj 0.5)))<BR>                       (setq pt1 (vla-PolarPoint utility pt0 (- ang (/ pi 2)) 0.00011))<BR>                       (setq lineObj (vla-addLine mspace pt0 pt1))<BR>                       (setq intpoints (vla-intersectwith offsetplineObj lineObj acExtendNone))<BR>                       (if (&gt; (vlax-safearray-get-u-bound (vlax-variant-value intpoints) 1) 0)<BR>                                               (princ "\n该多义线为顺时针。")<BR>                                               (princ "\n该多义线为逆时针。")<BR>                       )<BR>                       (vla-delete offsetplineObj)<BR>                       (vla-delete lineObj)<BR>               );progn<BR>               (princ "\n没有选择图元或非多义线。")<BR>        );end_if<BR>        (princ)<BR>)<BR>
页: [1] 2
查看完整版本: 多义线如果方向是顺时针的,其各点坐标的关系是怎样的