lisp中怎样判断绘制的多段线是顺时针还是逆时针绘制的
本帖最后由 南林浣风 于 2015-4-17 20:36 编辑lisp中怎样判断绘制的闭合多段线是顺时针还是逆时针绘制的
http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 南林浣风的微博 真是好多高手出手呀此贴么白来学习不少 额多段线好像没有顺时针和逆时针之分吧 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=85286&highlight=%C4%E6%CA%B1%D5%EB 答案在那里 434939575 发表于 2015-4-16 21:22 static/image/common/back.gif
答案在那里
好的,谢谢哥们了 本帖最后由 llsheng_73 于 2015-4-17 12:09 编辑
(defun Pldir(pts)
(<(apply'+(mapcar'(lambda(x y)(-(*(car x)(cadr y))(*(car y)(cadr x))))pts(append(cdr pts)(list(car pts)))))0))
(defun plinexy(e / p i)
(setq i -1)
(mapcar(function(lambda(x)(list(car x)(cadr x))))(reverse(repeat(fix(1+(vlax-curve-getEndParam e)))
(setq i(1+ i)p(cons(vlax-curve-getPointAtParam e i)p)))))
(if(equal(car p)(last p))(reverse(cdr(reverse p)))p)
)
(setq e(car(entsel"选择闭合多线段")))
(alert(if (Pldir(plinexy e))"逆时针""顺时针")
;;182 [功能] 曲线方向判断
(defun Curve:Direction (curve / box params)
(setq box (_pnts:box (Entity:Box curve))
params (mapcar
'(lambda (x)
(vlax-curve-getParamAtPoint
curve
(vlax-curve-getClosestPointTo curve x)
)
)
box
)
)
(or
(apply '<= params)
(<= (cadr lst) (caddr params) (cadddr params) (car params))
(<= (caddr params)
(cadddr params)
(car params)
(cadr params)
)
(<= (cadddr params)
(car params)
(cadr params)
(caddr params)
)
)
) (XLRX-ClockWiseP Curve) 434939575 发表于 2015-4-16 21:21 static/image/common/back.gif
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=85286&highlight=%C4%E6%CA%B1%D5%EB
哥们,这个程序有问题啊,运行不了,能不能帮我改改
页:
[1]
2