找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1564|回复: 1

[LISP程序]:怎样使多段线总是逆时针的

[复制链接]
发表于 2006-7-11 18:23:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
怎样使多段线总是逆时针的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 7329个

财富等级: 富甲天下

发表于 2006-7-11 19:13:44 | 显示全部楼层
正时针,逆时针
http://www.4d-technologies.com/techcenter/geom/ge_whatpoly.lsp
info:
http://www.4d-technologies.com/techcenter/index.htm

http://www.faqs.org/faqs/CAD/autolisp-faq/part2/section-5.html
[23.6] How to REVERT a polyline direction?

  1. ;; ! ***************************************************************************
  2. ;; ! GE_WhatPoly
  3. ;; ! ***************************************************************************
  4. ;; ! Function : Find the direction of the polygon (if Cw or CCw)
  5. ;; ! Argument : ptlist - list of points forming the polygon
  6. ;; ! Returns  :
  7. ;; !            1 - clockwise
  8. ;; !           -1 - counterclockwise
  9. ;; !            0 - Cannot be determined
  10. ;; ! Updated  : September 19, 1998
  11. ;; ! (C) 1999-2004, Four Dimension Technologies, Bangalore
  12. ;; ! e-mail   : [email]rakesh.rao@4d-technologies.com[/email]
  13. ;; ! Web      : [url]www.4d-technologies.com[/url]
  14. ;; ! ****************************************************************************

  15. (defun GE_WhatPoly (ptlist / nverts cnt area tmp pt1 pt2)
  16. (setq
  17.         cnt 0
  18.         nverts (length ptlist)
  19.         area 0.0
  20. )

  21. (while (< cnt (1- nverts))
  22. (setq
  23.         pt1 (nth cnt ptlist)
  24.         pt2 (nth (1+ cnt) ptlist)
  25.         area (+ area (* (cadr pt1) (car pt2)))
  26.         cnt (1+ cnt)
  27. )
  28. )

  29. (setq
  30.         pt1 (nth (1- nverts) ptlist)
  31.         pt2 (nth 0 ptlist)
  32.         area (+ area (* (cadr pt1) (car pt2)))
  33.         cnt 0
  34.         tmp 0.0
  35. )
  36.    
  37. (while (< cnt (1- nverts))
  38. (setq
  39.         pt1 (nth cnt ptlist)
  40.         pt2 (nth (1+ cnt) ptlist)
  41.         tmp (+ tmp (* (cadr pt2) (car pt1)))
  42.         cnt (1+ cnt)
  43. )
  44. )

  45. (setq
  46.         pt1 (nth 0 ptlist)
  47.         pt2 (nth (1- nverts) ptlist)
  48.         tmp (+ tmp (* (cadr pt1) (car pt2)))
  49.         area (* 0.5 (- area tmp))
  50. )

  51. (cond
  52.         ((< area 0.0) (setq area -1) )
  53.         ((> area 0.0) (setq area  1) )
  54.         (T (setq area 0) )
  55. )
  56. area
  57. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-21 06:02 , Processed in 0.315624 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表