乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 139|回复: 9

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

[复制链接]

12

主题

36

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
84
发表于 2004-5-8 13:53:00 | 显示全部楼层 |阅读模式
多义线如果方向是顺时针的,其各点坐标的关系是怎样的,既如何判断一条多义线是顺时针的或逆时针的?请帮忙,谢谢
回复

使用道具 举报

16

主题

909

帖子

8

银币

中流砥柱

Rank: 25

铜币
973
发表于 2004-5-8 16:04:00 | 显示全部楼层
如果是S形的话,是顺时针还是逆时针?
回复

使用道具 举报

6

主题

23

帖子

2

银币

初来乍到

Rank: 1

铜币
47
发表于 2004-5-8 16:18:00 | 显示全部楼层
多一线如果是封闭的,那么提取顶点是按逆时钟排列的
回复

使用道具 举报

12

主题

36

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
84
发表于 2004-5-8 16:54:00 | 显示全部楼层
不考虑S这么特殊的,只是单线或闭合线。
楼上说的多一线封闭的,提取的顶点按逆时钟排列,是说提取出来的点表中的点排列是逆时针的吗?没太明白您的意思
回复

使用道具 举报

17

主题

32

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2004-5-8 17:07:00 | 显示全部楼层
要是这样的话只需要判断PLINE的第二个点的坐标是否比第一个点的X轴的坐标大或者小就行了
回复

使用道具 举报

12

主题

36

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
84
发表于 2004-5-9 09:48:00 | 显示全部楼层
这样判断不行,比如闭和区域第二点的坐标不论怎样,都可能是逆或着是顺时针。
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-5-9 14:28:00 | 显示全部楼层
从中间找一个点,向各顶点做直线,求角度
回复

使用道具 举报

16

主题

909

帖子

8

银币

中流砥柱

Rank: 25

铜币
973
发表于 2004-5-9 14:29:00 | 显示全部楼层
如果是简单的平面封闭多义线,应该有办法。
回复

使用道具 举报

7

主题

63

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
91
发表于 2004-5-9 18:16:00 | 显示全部楼层

不一定哦
回复

使用道具 举报

16

主题

909

帖子

8

银币

中流砥柱

Rank: 25

铜币
973
发表于 2004-5-9 23:01:00 | 显示全部楼层
(defun C:test(/ doc utility mspace ss fd ang offsetObj plineObj pt0 pt1 intpoints)
         (setq doc (vla-get-activeDocument (vlax-get-acad-object)))
         (setq utility (vla-get-utility doc))
         (setq mspace (vla-get-modelspace doc))
         (if (setq ss (ssget ":s" '((0 . "*POLYLINE"))))
                 (progn
                         (setq plineObj (vlax-ename->vla-object (ssname ss 0)))
                         (setq fd (vlax-curve-getFirstDeriv plineObj 0.5))
                         (setq ang (atan (/ (cadr fd) (car fd))))
                         (setq offsetplineObj (car (vlax-safearray->list
                                         (vlax-variant-value
                                                         (vla-offset plineObj 0.0001)))))
                         (setq pt0 (vlax-3d-point (vlax-curve-getPointAtParam plineObj 0.5)))
                         (setq pt1 (vla-PolarPoint utility pt0 (- ang (/ pi 2)) 0.00011))
                         (setq lineObj (vla-addLine mspace pt0 pt1))
                         (setq intpoints (vla-intersectwith offsetplineObj lineObj acExtendNone))
                         (if (> (vlax-safearray-get-u-bound (vlax-variant-value intpoints) 1) 0)
                                                 (princ "\n该多义线为顺时针。")
                                                 (princ "\n该多义线为逆时针。")
                         )
                         (vla-delete offsetplineObj)
                         (vla-delete lineObj)
                 );progn
                 (princ "\n没有选择图元或非多义线。")
        );end_if
        (princ)
)
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-16 11:22 , Processed in 2.783117 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表