转载自: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. Eclipse 上安装 Maven3插件

    原文:http://www.cnblogs.com/quanyongan/archive/2013/04/18/3028181.html eclipse 安装插件的方式最常见的有两种: 1. 一种是在 ...

  2. 51nod1434 区间LCM

    将n!标准分解.m!/n!必定需要包含n!的分解式.对于每个质数枚举最小的答案,然后总的取最大. #include<cstdio> #include<cstring> #inc ...

  3. android系统掉电保护

    /************************************************************************ * android系统掉电保护 * 说明: * An ...

  4. HDU 5371 Hotaru's problem (Manacher,回文串)

    题意:给一个序列,找出1个连续子序列,将其平分成前,中,后等长的3段子序列,要求[前]和[中]是回文,[中]和[后]是回文.求3段最长为多少?由于平分的关系,所以答案应该是3的倍数. 思路:先Mana ...

  5. Hibernate-Native SQL

    1.标量(值)查询: sess.createSQLQuery("SELECT * FROM CATS").list(); sess.createSQLQuery("SEL ...

  6. Python网页解析

    续上篇文章,网页抓取到手之后就是解析网页了. 在Python中解析网页的库不少,我最开始使用的是BeautifulSoup,貌似这个也是Python中最知名的HTML解析库.它主要的特点就是容错性很好 ...

  7. js中substring和substr的用法

    js中substring和substr的用法 substring 方法用于提取字符串中介于两个指定下标之间的字符 substring(start,end) 开始和结束的位置,从零开始的索引 参数    ...

  8. C#循环声明一个类

    宗旨就是把实例化的类循环放到字典里面 Dictionary<string, Data> dic = new Dictionary<string, Data>(); ; i &l ...

  9. Linux下信号的简单使用

    1,1个main, 包含2个while, 不要被两个while中的sleep所迷惑,这里只有main()这一个主线程(进程)在运行,程序会按照自上而下顺序执行. 遇到第1个while循环中的sleep ...

  10. object does not contain a definition for get_range

      原因[1] 在VS2012中调用COM Interop DLL操作Excel通过get_Range去获取Range时,会发生Object does not contain a definition ...