[转载]关于AutoCAD.NET的辅助方法
转载自: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的辅助方法的更多相关文章
- 关于AutoCAD.NET的辅助方法
求中点坐标: /// <summary> /// 中点 /// </summary> /// <param name="StartPoint"> ...
- [转载]自定义ASP.NET MVC Html辅助方法 TagBuilder
在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我们想要的那个HTML标签的Html辅助方法,那么 ...
- 一步步学习ASP.NET MVC3 (13)——HTML辅助方法
请注明转载地址:http://www.cnblogs.com/arhat 今天老魏是在十分郁闷,我的一个U盘丢了,心疼里面的资料啊,全部是老魏辛辛苦苦积攒的Linux资料,太心疼,到现在心情还不是很爽 ...
- 【ASP.NET MVC系列】浅谈表单和HTML辅助方法
[01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作篇)(下) [04]浅谈ASP. ...
- MVC学习系列4--@helper辅助方法和用户自定义HTML方法
在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...
- 《ASP.NET MVC高级编程(4版)》读书笔记(5)表单和HTML辅助方法
5.1 表单使用 5.1.1 action 和 method 特性 <form action="/Home/Index"> <input name=&qu ...
- MVC辅助方法
我相信很多人虽然经常用mvc去做一些东西,但是可能很少使用mvcHtml辅助方法 首先我们要创建一个mvc项目 二创建一个HtmlHelper文件夹 三编写文件 四调用辅助方法 调用辅助方法 和使用其 ...
- ASP.NET 中HTML和Form辅助方法
Form辅助方法 Form最重要的属性就是action和method,action指明form中的数据被提交到哪里,method指明用什么方法,默认为GET,下面是一个简单的例子: <form ...
- MVC之路随记3--Html辅助方法
概述:MVC中使用@Html.MethodName 来做很多Html的事情,简化了开发工程量,使用方便,并且易于理解 详细方法: 1.表单 <form action="/Home/Se ...
随机推荐
- git plumbing 更加底层命令解析-深入理解GIT
原文: http://rypress.com/tutorials/git/plumbing 本文详细介绍GIT Plumbing--更加底层的git命令,你将会对git在内部是如何管理和呈现一个项目r ...
- HDU 3951 (博弈) Coin Game
先考虑两种简单的情况: 如果先手能一次把硬币拿完,即 k >= n ,那么先手胜 如果每次只能拿一个硬币, 即 k = 1 ,那么如果有奇数个硬币先手胜,如果有偶数个硬币后手胜. 剩下的情况就是 ...
- 51nod1055 最长等差数列
完全一脸懵逼!.dp[i][j]表示i,j为相邻的两项的最大值.两个指针两边扫的思想好劲啊这个!%%% #include<cstdio> #include<cstring> # ...
- ASP.NET 时间方法大全
DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays(- Convert.ToInt32(dt.DayOfWeek.To ...
- css overflow:hidden无效解决办法
解决方案:只需要在设定overflow:hidden层加入定位即可 position:relative;left:0px;top:0px
- zabbix (2.0.6) 历史记录处乱码
1.首先备份数据库 mysqldump -uroot -p123456 zabbix > zabbix.sql 2.设置字符 sed -i 's/latin1/utf8/g' zabbix.sq ...
- distinguish and differentiate
According to Cambridge Dictionary distinguish:to recognize or understand the difference between two ...
- AE+C# 图层中增加相应属性标注
原文 AE+C# 图层中增加相应属性标注 ) { IGeoFeatureLayer pGeoFeatureLayer; ILineLabelPosition pLineLabelPosition; I ...
- 迅影QQ视频查看v2.0 源码
骗了1200多位朋友,实在惭愧,现在公开我自己的源码实现.本人新人,代码很烂,请凑合看吧O(∩_∩)O~ Form1.cs using System; using System.Text.Regula ...
- 通知(Toast+Notification)
Toast简要说明:(前面已经用过好多次了) Toast是一种非持久的(在屏幕上面留一会儿就消失了),提供给用户简洁提示信息的视图. 它不阻断用户的操作,一般用于显示一些不重要的信息.(比方说设置音量 ...