转载自:http://www.cnblogs.com/milian/p/3315000.html

求中点坐标:

        /// <summary>
/// 中点
/// </summary>
/// <param name="StartPoint">起点</param>
/// <param name="EndPoint">终点</param>
/// <returns></returns>
public Point3d Midpoint(Point3d StartPoint, Point3d EndPoint)
{
Double x = (StartPoint.X + EndPoint.X)/2;
Double y = (StartPoint.Y + EndPoint.Y) / 2;
Double z = (StartPoint.Z + EndPoint.Z) / 2;
return new Point3d(x, y, z);
}

  求点到直线的距离:

         /// <summary>
/// 获得空间点到空间线段的垂直距离
/// </summary>
/// <param name="line">直线</param>
/// <param name="pt">空间的点</param>
/// <param name="Decimal">小数位数</param>
/// <returns>点到直线垂直距离</returns>
public Double Distance(Line line, Point3d pt, Int16 Decimal)
{
Double t;
if (line != null)
{
Point3d StartPoint = line.StartPoint;
Point3d EndPoint = line.EndPoint;
//直线方向向量
Point3d dir = new Point3d(StartPoint.X - EndPoint.X, StartPoint.Y - EndPoint.Y, StartPoint.Z - EndPoint.Z);
//过点且与直线垂直的平面
t = -(Double)(dir.X * (StartPoint.X - pt.X) + dir.Y * (StartPoint.Y - pt.Y) + dir.Z * (StartPoint.Z - pt.Z)) / (dir.X * dir.X + dir.Y * dir.Y + dir.Z * dir.Z);
//过点的垂直于直线的平面与该直线的交点
Point3d fp = new Point3d(StartPoint.X + dir.X * t, StartPoint.Y + dir.Y * t, StartPoint.Z + dir.Z * t);
return Distance(pt, fp, Decimal);
}
else
{
return 0;
}
}

  求空间两点之间距离:

         /// <summary>
/// 空间两点之间距离
/// </summary>
/// <param name="point1">点1</param>
/// <param name="point2">点2</param>
/// <param name="Decimal">小数位数</param>
/// <returns></returns>
public Double Distance(Point3d point1, Point3d point2, Int16 Decimal)
{
Double a = point1.X - point2.X;
Double b = point1.Y - point2.Y;
Double c = point1.Z - point2.Z;
Double r = a * a + b * b + c * c;
return Math.Round(Math.Abs(Math.Sqrt(r)), Decimal);
} 

  判断两条直线是否重合:

        /// <summary>
/// 判断两条直线是否重合
/// </summary>
/// <param name="line1">线1</param>
/// <param name="line2">线2</param>
/// <param name="allowance">容差</param>
/// <returns></returns>
public Boolean Coincide(Line line1, Line line2, Double allowance)
{
LineSegment3d l1 = new LineSegment3d(line1.StartPoint, line1.EndPoint);
LineSegment3d l2 = new LineSegment3d(line2.StartPoint, line2.EndPoint);
Tolerance tol = new Tolerance(allowance, allowance);
return l1.IsColinearTo(l2, tol);
}

  判断点是否在直线上:  

         /// <summary>
/// 判断点是否在直线上
/// </summary>
/// <param name="line">直线</param>
/// <param name="point1">点</param>
/// <param name="allowance">容差</param>
/// <returns></returns>
public Boolean Coincide(Line line, Point3d point1, Double allowance)
{
Point3d p1 = line.StartPoint;
Point3d p2 = line.EndPoint;
//叉积是否为allowance,判断是否在同一直线上
if (Math.Abs((p1.X - point1.X) * (p2.Y - point1.Y) - (p2.X - point1.X) * (p1.Y - point1.Y)) < allowance)
{
return true;
}
else
{
return false;
}
}

   判断点是否重合:

        /// <summary>
/// 判断点是否重合
/// </summary>
/// <param name="p1">点1</param>
/// <param name="p2">点2</param>
/// <param name="allowance">容差</param>
/// <returns></returns>
public Boolean Coincide(Point3d p1, Point3d p2, Double allowance)
{
if (p1.DistanceTo(p2) < allowance)
return true;
else
return false;
}

[转载]关于AutoCAD.NET的辅助方法的更多相关文章

  1. 关于AutoCAD.NET的辅助方法

    求中点坐标: /// <summary> /// 中点 /// </summary> /// <param name="StartPoint"> ...

  2. [转载]自定义ASP.NET MVC Html辅助方法 TagBuilder

    在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我们想要的那个HTML标签的Html辅助方法,那么 ...

  3. 一步步学习ASP.NET MVC3 (13)——HTML辅助方法

    请注明转载地址:http://www.cnblogs.com/arhat 今天老魏是在十分郁闷,我的一个U盘丢了,心疼里面的资料啊,全部是老魏辛辛苦苦积攒的Linux资料,太心疼,到现在心情还不是很爽 ...

  4. 【ASP.NET MVC系列】浅谈表单和HTML辅助方法

    [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作篇)(下) [04]浅谈ASP. ...

  5. MVC学习系列4--@helper辅助方法和用户自定义HTML方法

    在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...

  6. 《ASP.NET MVC高级编程(4版)》读书笔记(5)表单和HTML辅助方法

    5.1 表单使用 5.1.1 action 和 method 特性 <form action="/Home/Index">     <input name=&qu ...

  7. MVC辅助方法

    我相信很多人虽然经常用mvc去做一些东西,但是可能很少使用mvcHtml辅助方法 首先我们要创建一个mvc项目 二创建一个HtmlHelper文件夹 三编写文件 四调用辅助方法 调用辅助方法 和使用其 ...

  8. ASP.NET 中HTML和Form辅助方法

    Form辅助方法 Form最重要的属性就是action和method,action指明form中的数据被提交到哪里,method指明用什么方法,默认为GET,下面是一个简单的例子: <form ...

  9. MVC之路随记3--Html辅助方法

    概述:MVC中使用@Html.MethodName 来做很多Html的事情,简化了开发工程量,使用方便,并且易于理解 详细方法: 1.表单 <form action="/Home/Se ...

随机推荐

  1. UVa 10054 (打印欧拉回路) The Necklace

    将每个颜色看成一个顶点,对于每个珠子在两个颜色之间连一条无向边,然后求欧拉回路. #include <cstdio> #include <cstring> + ; int G[ ...

  2. openerp 7 在ubuntu上设置开机启动

    我们要让openerp开机运行起来. 第一步,先进入系统目录: cd /etc/init.d 第二步,创建文件.命名为openerp-server sudo vi openepr-server 第三步 ...

  3. POJ 3565 Ants (最小权匹配)

    题意 给出一些蚂蚁的点,给出一些树的点,两两对应,使他们的连线不相交,输出一种方案. 思路 一开始没想到怎么用最小权匹配--后来发现是因为最小权匹配的方案一定不相交(三角形两边之和大于第三边)--还是 ...

  4. How to: Modify a Project System So That Projects Load in Multiple Versions of Visual Studio

    http://msdn.microsoft.com/en-us/library/hh266706(v=VS.110).aspx

  5. ecshop 删除随机版权

    删除随机版权: js/commjon.js -> onload = function()函数

  6. SAS Config文件 处理流程

    Processing Options Specified by Additional CONFIG Options You can also specify additional –CONFIG op ...

  7. 函数式宏定义用do...while(0)的好处

    函数式宏定义经常写成这样:<pre lang="c" escaped="true">#define device_init_wakeup(dev, ...

  8. notepad 行替换使用指南

    notepad++是开源的文本处理软件,性能堪比ultraedit,不过在转用notepad++之后一直为他的行替换功能纠结,UE当中只需要用 [^p] 就可以表示一行,但是在notepad++当中, ...

  9. Linux中重定向及管道

    1重定向1.1      重定向符号 >               输出重定向到一个文件或设备 覆盖原来的文件 >!              输出重定向到一个文件或设备 强制覆盖原来的 ...

  10. 用于科创的git log美化输出

    git log --reverse --pretty=format:'%cd %s' --date=short > a.txt 更好的: git log --reverse --pretty=f ...