找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1287|回复: 3

[分享] 关于AutoCAD.NET的辅助方法

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-6-1 16:09:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
http://www.cnblogs.com/milian/p/3315000.html
求中点坐标:

  1. /// <summary>
  2.         /// 中点
  3.         /// </summary>
  4.         /// <param name="StartPoint">起点</param>
  5.         /// <param name="EndPoint">终点</param>
  6.         /// <returns></returns>
  7.         public Point3d Midpoint(Point3d StartPoint, Point3d EndPoint)
  8.         {
  9.             Double x = (StartPoint.X + EndPoint.X)/2;
  10.             Double y = (StartPoint.Y + EndPoint.Y) / 2;
  11.             Double z = (StartPoint.Z + EndPoint.Z) / 2;
  12.             return new Point3d(x, y, z);
  13.         }
复制代码
求点到直线的距离:

  1. /// <summary>
  2.         /// 获得空间点到空间线段的垂直距离
  3.         /// </summary>
  4.         /// <param name="line">直线</param>
  5.         /// <param name="pt">空间的点</param>
  6.         /// <param name="Decimal">小数位数</param>
  7.         /// <returns>点到直线垂直距离</returns>
  8.         public Double Distance(Line line, Point3d pt, Int16 Decimal)
  9.         {
  10.             Double t;
  11.             if (line != null)
  12.             {
  13.                 Point3d StartPoint = line.StartPoint;
  14.                 Point3d EndPoint = line.EndPoint;
  15.                 //直线方向向量
  16.                 Point3d dir = new Point3d(StartPoint.X - EndPoint.X, StartPoint.Y - EndPoint.Y, StartPoint.Z - EndPoint.Z);
  17.                 //过点且与直线垂直的平面
  18.                 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);
  19.                 //过点的垂直于直线的平面与该直线的交点
  20.                 Point3d fp = new Point3d(StartPoint.X + dir.X * t, StartPoint.Y + dir.Y * t, StartPoint.Z + dir.Z * t);
  21.                 return Distance(pt, fp, Decimal);
  22.             }
  23.             else
  24.             {
  25.                 return 0;
  26.             }
  27.         }
复制代码
判断两条直线是否重合:

  1. /// <summary>
  2.         /// 判断两条直线是否重合
  3.         /// </summary>
  4.         /// <param name="line1">线1</param>
  5.         /// <param name="line2">线2</param>
  6.         /// <param name="allowance">容差</param>
  7.         /// <returns></returns>
  8.         public Boolean Coincide(Line line1, Line line2, Double allowance)
  9.         {
  10.             LineSegment3d l1 = new LineSegment3d(line1.StartPoint, line1.EndPoint);
  11.             LineSegment3d l2 = new LineSegment3d(line2.StartPoint, line2.EndPoint);
  12.             Tolerance tol = new Tolerance(allowance, allowance);           
  13.             return l1.IsColinearTo(l2, tol);
  14.         }
复制代码
判断点是否在直线上

  1. /// <summary>
  2.         /// 判断点是否在直线上
  3.         /// </summary>
  4.         /// <param name="line">直线</param>
  5.         /// <param name="point1">点</param>
  6.         /// <param name="allowance">容差</param>
  7.         /// <returns></returns>
  8.         public Boolean Coincide(Line line, Point3d point1, Double allowance)
  9.         {
  10.             Point3d p1 = line.StartPoint;
  11.             Point3d p2 = line.EndPoint;
  12.             //叉积是否为allowance,判断是否在同一直线上
  13.             if (Math.Abs((p1.X - point1.X) * (p2.Y - point1.Y) - (p2.X - point1.X) * (p1.Y - point1.Y)) < allowance)
  14.             {
  15.                 return true;
  16.             }
  17.             else
  18.             {
  19.                 return false;
  20.             }
  21.         }
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 82个

财富等级: 招财进宝

发表于 2020-6-28 17:21:18 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 104个

财富等级: 日进斗金

发表于 2020-6-29 20:05:21 | 显示全部楼层
好东西,值得收藏
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2020-12-9 19:37:55 | 显示全部楼层
谢谢楼主
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-19 14:38 , Processed in 0.189349 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表