chpmould 发表于 2010-12-18 14:25:02

获取一条线的角度

请老师指点,如何获取一条线的角度,以下是画一条斜线的代码,请帮助增加获取这条斜线的语句

chpmould 发表于 2010-12-18 14:25:27

本帖最后由 chpmould 于 2010-12-18 14:25 编辑

public void testLine()
      {
            Database db = HostApplicationServices.WorkingDatabase;
            using (Transaction ta = db.TransactionManager.StartTransaction())
            {
                BlockTable bt = (BlockTable)ta.GetObject(db.BlockTableId, OpenMode.ForRead);
                BlockTableRecord btr = (BlockTableRecord)ta.GetObject(bt, OpenMode.ForWrite);
                Line ent = new Line(new Point3d(0, 0, 0), new Point3d(20, 10, 0));

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

                btr.AppendEntity(ent);
                ta.AddNewlyCreatedDBObject(ent, true);
                ta.Commit();
            }
      }

雪山飞狐_lzh 发表于 2010-12-18 14:39:50

http://bbs.mjtd.com/thread-81457-1-1.html

chpmould 发表于 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)
)

雪山飞狐_lzh 发表于 2010-12-18 21:56:38

if...else if...else if...else...

chpmould 发表于 2010-12-19 18:04:03

谢谢,我去试试...

chpmould 发表于 2010-12-19 23:13:05

本帖最后由 chpmould 于 2010-12-19 23:14 编辑

请老师帮我看一下,我按以下方法写,没有反映,请帮我看看我错在那里...
if ((angle > 90) && (angle <= 270))
{
angle = angle - 180;
}
else if (angle > 270)
{
angle = angle - 360;
}
else if ((angle - 90) == 90)
{
angle = 90;
}
else
{
angle = angle;
}

雪山飞狐_lzh 发表于 2010-12-19 23:31:38

基本语法找本书自学,或者查msdn
另外把链接的帖子看完看仔细

chpmould 发表于 2010-12-19 23:50:52

我测试已获取一条线的角度(angle)成功,我现主要是卡在如何判断角度(angle)... ...

雪山飞狐_lzh 发表于 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)
{

}
页: [1] 2
查看完整版本: 获取一条线的角度