找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 880|回复: 7

[求助] [求助]:[0114]怎样判断选取的两线段是顺时针还是逆时针方向呢?

[复制链接]
发表于 2006-1-14 09:08:52 | 显示全部楼层 |阅读模式

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

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

×
附上图面
问题:
01.怎样判断选取的两线段是顺时针还是逆时针方向呢?
02.想依据得到的方向
填入再环形阵列中再顺时针及逆时针角度值
即下面程序中的 "顺逆时针方向+角度值?"

以下是目前写出来的程式,但尚不完整
(setq en1 (car (entsel "\n 选取一线段:")))
(setq bj (entlast))
(setq p1n10 (cdr (assoc 10 (entget en1))))
(setq p1n11 (cdr (assoc 11 (entget en1))))
(setq en2 (car (entsel "\n 选取另一线段:")))
(setq p2n10 (cdr (assoc 10 (entget en2))))
(setq p2n11 (cdr (assoc 11 (entget en2))))
(setq pt0 (inters p1n10 p1n11 p2n10 p2n11 nil))
(setq ard (- (* pi 2) (- (angle pt0 p1n11) (angle pt0 p2n11)) ))
(setq angen1 (angle pt0 p1n11))
(setq angen2 (angle pt0 p2n11))

(command "-array" en1 "" "p" pt0  ard "顺逆时针方向+角度值?" "y")

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

已领礼包: 111个

财富等级: 日进斗金

发表于 2006-1-14 13:56:08 | 显示全部楼层
使用附件中的函数snsj[调用方式为:(snsj 直线段1 直线段2)]可以进行判断,
顺时针返回"T";逆时针返回"nil";两直线段平行或重合返回"0"。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-14 15:24:04 | 显示全部楼层
谢谢楼主的程序
但小弟愚笨
想再请问一下
传回的 T = 顺时针
该怎样编写呢?
另外这个 T  又该怎样带入
阵列的角度中呢? " T 顺 NIL 逆时针方向+角度值?" "
(command "-array" en1 "" "p" pt0 ard "顺逆时针方向+角度值?" "y")

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

使用道具 举报

发表于 2006-1-15 21:09:01 | 显示全部楼层
如果线的首尾点颠倒时,用以上方法计算结果可能不正确.而且用的种方法定义一条线是顺时针或逆时针也不准确.逆时针或顺时针是对封闭线而言.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 111个

财富等级: 日进斗金

发表于 2006-1-17 12:24:48 | 显示全部楼层
  1. ;请试用以下小程序
  2. ;因两条直线段的顺、逆时针是相对的,故要求输入阵列方向
  3. (defun c:cc()
  4.    (setq cm (getvar "cmdecho"))(setvar "cmdecho" 0)
  5.    (while (setq en1 (car (entsel "\n请选择直线段1:")))
  6.       (setq en2 (car (entsel "\n请选择直线段2:"))
  7.             num (getint "\n输入阵列中项目的数目<10>:")
  8.             nbz (getint "\n请指定阵列方向(1.逆时针/2.顺时针)<1>:")
  9.             db1 (entget en1)
  10.             p11 (cdr (assoc 10 db1)) p12 (cdr (assoc 11 db1))
  11.             db2 (entget en2)
  12.             p21 (cdr (assoc 10 db2)) p22 (cdr (assoc 11 db2))
  13.        )
  14.        (if (= num nil)(setq num 10))
  15.        (if (= nbz nil)(setq nbz 1))
  16.        (if (setq po (inters p11 p12 p21 p22 nil))
  17.           (progn
  18.             (setq da (- (angle po p21) (angle po p11)))
  19.             (if (< da 0)(setq da (+ da (* 2.0 pi))))
  20.             (if (/= nbz 1)
  21.                 (setq da (strcat "-" (angtos (- (* 2.0 pi) da) 1 6)))
  22.                 (setq da (angtos da 1 6))
  23.             )
  24.             (command "_array" en1 "" "p" po num da "y")
  25.           )
  26.           (if (= (abs (- (angle p21 p22) (angle p11 p12))) pi)
  27.               (alert "所选择的两条直线段共线!")
  28.               (alert "所选择的两条直线段平行!")
  29.           )
  30.        )
  31.    )
  32.    (setvar "cmdecho" cm)(princ)
  33. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-17 12:32:45 | 显示全部楼层
真是不错的解答

来去用看看吧

另外若是两线的端点有连在一起时

呈现类似 <  形状

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

使用道具 举报

已领礼包: 111个

财富等级: 日进斗金

发表于 2006-1-17 12:36:38 | 显示全部楼层
不可以
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-17 14:05:54 | 显示全部楼层
4楼说得对,逆时针或顺时针是对封闭线而言.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 02:56 , Processed in 0.233531 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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