乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 98|回复: 5

获取 Curve 坐标方法

[复制链接]

13

主题

53

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2009-12-9 15:39:00 | 显示全部楼层 |阅读模式
  1. ///
  2.         /// 获取线对象上的坐标集和突度集
  3.         ///
  4.         /// Curve对象
  5.         /// 坐标集
  6.         /// 突度集
  7.         public static void GetPolylinePoint3dsAndBulge(this Curve curve,ref Point3dCollection Point3dColl,ref DoubleCollection Bulges)
  8.         {
  9.             try
  10.             {
  11.                
  12.                 Point3dColl.Clear();
  13.                 Bulges.Clear();
  14.                 switch (curve.GetEntityType())
  15.                 {
  16.                     case "Polyline":
  17.                         Polyline polylineObject = (Polyline)curve;
  18.                         int NumberOfVertices = polylineObject.NumberOfVertices;
  19.                         for (int i = 0; i
  20.         /// 返回CAD对象类型
  21.         ///
  22.         /// 对象名称
  23.         ///
  24.         public static string GetEntityType(this Entity ent)
  25.         {
  26.             try
  27.             {
  28.                 return ent.GetType().ToString().Replace("Autodesk..DatabaseServices.", "");
  29.             }
  30.             catch
  31.             {
  32.                 return "";
  33.             }
  34.         } ///
  35.         /// 获取ObjectId的Entity
  36.         ///
  37.         /// 对象ID
  38.         /// 事务处理对象
  39.         /// 读取模式
  40.         ///
  41.         public static DBObject GetEntity(this ObjectId ObjId, Transaction trans, OpenMode openmode, bool openErased, bool forceOpenOnLockeDLayer)
  42.         {
  43.             try
  44.             {
  45.                 return (DBObject)trans.GetObject(ObjId, openmode, openErased, forceOpenOnLockeDLayer);
  46.             }
  47.             catch (Exception)
  48.             {
  49.                 return null;
  50.             }
  51.         }
  52. ///后面部分是抄的,原来自己写的方向有时候有问题
  53. ///忘记哪里了,急用没留地址,找不到了
  54. ///希望这位朋友不要介意啊,哈哈
  55.         //计算凸起值
  56.         public static double GetBulge(this Arc A, bool SEbo)
  57.         {
  58.             double Bulge = 0;
  59.             double L1 = GetDistance(A.StartPoint, A.EndPoint);
  60.             double Angle = A.EndAngle - A.StartAngle;
  61.             if (Angle  Math.PI)
  62.             {
  63.                 //判断是否大于180度
  64.                 Bulge = A.Radius + Math.Sqrt(Math.Pow(A.Radius, 2) - Math.Pow((L1 / 2), 2));
  65.                 //计算凸起值
  66.             }
  67.             else
  68.             {
  69.                 Bulge = A.Radius - Math.Sqrt(Math.Pow(A.Radius, 2) - Math.Pow((L1 / 2), 2));
  70.                 //计算凸起值
  71.             }
  72.             Point3d Pt2 = A.GetPointAtDist(A.GetDistanceAtParameter(A.EndParam) / 2);
  73.             //取中点
  74.             double TempDouble = 0;
  75.             if (SEbo == true)
  76.             {
  77.                 //判断方向
  78.                 TempDouble = PtSide(A.StartPoint, Pt2, A.EndPoint);
  79.             }
  80.             else
  81.             {
  82.                 TempDouble = PtSide(A.EndPoint, Pt2, A.StartPoint);
  83.             }
  84.             if (TempDouble > 0)
  85.             {
  86.                 //判断圆弧是凸向哪边
  87.                 return -Bulge / (L1 / 2);
  88.             }
  89.             else
  90.             {
  91.                 return Bulge / (L1 / 2);
  92.             }
  93.         }
  94.         //判断圆弧是凸向哪边
  95.         private static double PtSide(Point3d pt1, Point3d pt2, Point3d pt3)
  96.         {
  97.             Vector3d vect1 = pt1.GetVectorTo(pt2);
  98.             Vector3d vect2 = pt1.GetVectorTo(pt3);
  99.             return vect2.X * vect1.Y - vect1.X * vect2.Y;
  100.         }
扩展方法需要放在静态类里面
回复

使用道具 举报

20

主题

73

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
153
发表于 2009-12-9 17:34:00 | 显示全部楼层
小狼兄发贴啦
大家快来支持啊
回复

使用道具 举报

275

主题

808

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1909
发表于 2009-12-10 17:33:00 | 显示全部楼层
好东西,支持下,收藏啦
回复

使用道具 举报

7

主题

55

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2009-12-13 22:06:00 | 显示全部楼层
收藏一下先。以后有用的时候来再来
回复

使用道具 举报

7

主题

55

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2009-12-17 21:48:00 | 显示全部楼层
谢谢。
我这几一正在看ployline
再次谢谢!!
回复

使用道具 举报

0

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2013-8-5 16:00:00 | 显示全部楼层
终于找到了。支持下
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 21:15 , Processed in 0.372432 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表