明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3932|回复: 15

[基础] 获取一条线的角度

  [复制链接]
发表于 2010-12-18 14:25:02 | 显示全部楼层 |阅读模式
请老师指点,如何获取一条线的角度,以下是画一条斜线的代码,请帮助增加获取这条斜线的语句

 楼主| 发表于 2010-12-18 14:25:27 | 显示全部楼层
本帖最后由 chpmould 于 2010-12-18 14:25 编辑
  1. public void testLine()
  2.         {
  3.             Database db = HostApplicationServices.WorkingDatabase;
  4.             using (Transaction ta = db.TransactionManager.StartTransaction())
  5.             {
  6.                 BlockTable bt = (BlockTable)ta.GetObject(db.BlockTableId, OpenMode.ForRead);
  7.                 BlockTableRecord btr = (BlockTableRecord)ta.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
  8.                 Line ent = new Line(new Point3d(0, 0, 0), new Point3d(20, 10, 0));

  9.                 //请老师指点,如何获取这条线的角度

  10.                 btr.AppendEntity(ent);
  11.                 ta.AddNewlyCreatedDBObject(ent, true);
  12.                 ta.Commit();
  13.             }
  14.         }
发表于 2010-12-18 14:39:50 | 显示全部楼层
 楼主| 发表于 2010-12-18 15:50:19 | 显示全部楼层
本帖最后由 chpmould 于 2010-12-18 17:36 编辑

另请教老师在C#中如何写LISP中以下角度判断与转换代码
(setq angle(cond((and(> angle 90)(<= angle 270(((-angle 180))
     ((> angle 270)(- angle 360))
     ((= angle -90)(90))
     (t angle)
)
发表于 2010-12-18 21:56:38 | 显示全部楼层
if...else if...else if...else...
 楼主| 发表于 2010-12-19 18:04:03 | 显示全部楼层
谢谢,我去试试...
 楼主| 发表于 2010-12-19 23:13:05 | 显示全部楼层
本帖最后由 chpmould 于 2010-12-19 23:14 编辑

请老师帮我看一下,我按以下方法写,没有反映,请帮我看看我错在那里...
  1. if ((angle > 90) && (angle <= 270))
  2. {
  3. angle = angle - 180;
  4. }
  5. else if (angle > 270)
  6. {
  7. angle = angle - 360;
  8. }
  9. else if ((angle - 90) == 90)
  10. {
  11. angle = 90;
  12. }
  13. else
  14. {
  15. angle = angle;
  16. }
复制代码

发表于 2010-12-19 23:31:38 | 显示全部楼层
基本语法找本书自学,或者查msdn
另外把链接的帖子看完看仔细
 楼主| 发表于 2010-12-19 23:50:52 | 显示全部楼层
我测试已获取一条线的角度(angle)成功,我现主要是卡在如何判断角度(angle)... ...
发表于 2010-12-20 12:35:43 | 显示全部楼层
本帖最后由 lzh741206 于 2010-12-20 12:40 编辑

要判断角度其实很简单
1/
确保ang1和ang2在【0,2*pi】
2/

ang3 = ang2 < Math.PI ? ang2 + Math.PI : ang2 - Math.PI;
if(ang1 == ang2 || ang1 == ang3)
{

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 00:29 , Processed in 0.185721 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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