[转载]关于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;
        } 

时间: 2024-10-05 20:45:04

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

ASP.NET MVC5(三):表单和HTML辅助方法

表单的使用 Action和Method特性 Action特性用以告知浏览器信息发往何处,因此,Action特性后面需要包含一个Url地址.这里的Url地址可以是相对的,也可以是绝对的.如下Form标签向Bing的search页面发送一个搜索词(输入元素的名称为q). <form action="http://www.bing.com/search"> <input name="q" type="text" /> <i

004.MVC视图、辅助方法

一.视图基础- 视图定义: 用户界面,是显示应用程序用户界面(UI)组件 Web应用程序:页面 作用: 1.输出/显示模型数据 2.出入提交 视图建议在View文件夹位置存储视图 视图引擎(了解):本意发动机,这里指的是:处理视图的软件(框架内部) ASP.NET Web窗体提供了一种视图引擎,称为Web窗体引擎 ASP.NET MVC1及MVC2版本中支持Web窗体引擎 ASP.NET MVC3版本除了支持Web窗体引擎,还提供了一种新的视图引擎,称为Razor(视图)引擎 Razor引擎更加

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

5.1 表单使用 5.1.1 action 和 method 特性 <form action="/Home/Index"> <input name="q" type="text"/> <input value="提交" type="submit" /> </form> 如果没有 method 默认是: get 方法. 5.1.2 GET 方法还是 POST 方

MVC5高级编程_表单和html辅助方法

使用HTML辅助方法关键在于 确保HTML页面链接中的URL指向正确的位置.表单元素拥有适用于模型绑定的合适名称和值,以及当模型 绑定失败时其他元素能够显示相应的错误提示消息. 1.表单的使用     @using(Html.BeginForm("Searhch", "Home", FormMethod.Get,new { target = "_blank", @class="editForm", data-validatab

MVC强类型视图、强类型HTML辅助方法

强类型视图: <table> <tr> <td>ID:</td><td><%: Model.Id %></td> </tr> <tr> <td>姓名:</td><td><%: Model.UserName %></td> </tr> <tr> <td>年龄:</td><td><

HTML辅助方法的练习一

index.cshtml @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> <div> HTML辅助方法的练习,帮程序员脱离苦海 &

【MVC】自定义ASP.NET MVC Html辅助方法

在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我们想要的那个HTML标签的Html辅助方法,那么,我们就可以通过自己定义一个Html扩展方法来达到这个目的. 比如,到目前为止,Html扩展方法中没有关于<input type="file" />这类标签的辅助方法,那么我们就可以自已实现一个.本文以实现<input type="file" />

MVC中使用内建的HTML辅助方法产生表单元素提交表单与button按钮事件的陷阱

网站模板页有个登陆的退出按钮,当点击时跳转到登陆页面. <button onclick="logout()" >退出</button> $("#logOut").click(function () { location.href = "@Url.Action("Logout", "Account")"; }); 然后再某个页面楼主用了HTML辅助方法产生表单元素,代码如下所示: @H

Asp.net MVC4.0自定义Html辅助方法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Web.Mvc; namespace MyEF.ExtentionHtmlHelper { public static class ImageHelper { //说明:因为C#3.0的扩充方法是一种特殊的静态方法,因此在开发Html辅助方法时必须声明为 //静态方