多义线如果方向是顺时针的,其各点坐标的关系是怎样的
多义线如果方向是顺时针的,其各点坐标的关系是怎样的,既如何判断一条多义线是顺时针的或逆时针的?请帮忙,谢谢 如果是S形的话,是顺时针还是逆时针? 多一线如果是封闭的,那么提取顶点是按逆时钟排列的 不考虑S这么特殊的,只是单线或闭合线。楼上说的多一线封闭的,提取的顶点按逆时钟排列,是说提取出来的点表中的点排列是逆时针的吗?没太明白您的意思 要是这样的话只需要判断PLINE的第二个点的坐标是否比第一个点的X轴的坐标大或者小就行了 这样判断不行,比如闭和区域第二点的坐标不论怎样,都可能是逆或着是顺时针。 从中间找一个点,向各顶点做直线,求角度 如果是简单的平面封闭多义线,应该有办法。
不一定哦
redearth发表于2004-5-8 16:18:00static/image/common/back.gif多一线如果是封闭的,那么提取顶点是按逆时钟排列的<BR><b>不一定哦</b> (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->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->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 (> (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