找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1227|回复: 1

[分享] AutoCAD.net: 求空间两曲线交点

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

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

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

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

×
本帖最后由 csharp 于 2014-6-1 16:02 编辑

引自:http://www.objectarx.net/bbs/archiver/?tid-410.html
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Autodesk.AutoCAD.ApplicationServices;
  5. using Autodesk.AutoCAD.Colors;
  6. using Autodesk.AutoCAD.DatabaseServices;
  7. using Autodesk.AutoCAD.EditorInput;
  8. using Autodesk.AutoCAD.Geometry;
  9. using Autodesk.AutoCAD.Runtime;
  10. using AsApp = Autodesk.AutoCAD.ApplicationServices.Application;
  11. using DsTM = Autodesk.AutoCAD.DatabaseServices.TransactionManager;
  12. using Autodesk.AutoCAD.GraphicsInterface;
  13. using Autodesk.AutoCAD.Interop;

  14. namespace ObjectArxNet.Test
  15. {
  16.     /**//// <summary>
  17.     /// 求空间两曲线交点
  18.     /// </summary>
  19.     public class Intersection
  20.     {
  21.         [CommandMethod("IntersectionTest")]
  22.         public void IntersectionTest()
  23.         {
  24.             Editor m_ed = Application.DocumentManager.MdiActiveDocument.Editor;
  25.             Database m_db = HostApplicationServices.WorkingDatabase;
  26.             PromptEntityOptions m_peo = new PromptEntityOptions("\n请选择第一条曲线:");
  27.             PromptEntityResult m_per = m_ed.GetEntity(m_peo);
  28.             if (m_per.Status != PromptStatus.OK) { return; }
  29.             ObjectId m_objid1 = m_per.ObjectId;

  30.             m_peo = new PromptEntityOptions("\n请选择第二条曲线:");
  31.             m_per = m_ed.GetEntity(m_peo);

  32.             if (m_per.Status != PromptStatus.OK) { return; }
  33.             ObjectId m_objid2 = m_per.ObjectId;

  34.             using (Transaction m_tr = m_db.TransactionManager.StartTransaction())
  35.             {
  36.                 Curve m_cur1 = (Curve)m_tr.GetObject(m_objid1, OpenMode.ForRead);
  37.                 Curve m_cur2 = (Curve)m_tr.GetObject(m_objid2, OpenMode.ForRead);

  38.                 Point3dCollection m_ints = new Point3dCollection();
  39.                 m_cur1.IntersectWith(m_cur2, Intersect.OnBothOperands, new Plane(), m_ints, 0, 0); //得出的所有交点在c1曲线上
  40.                 foreach (Point3d m_pt in m_ints)
  41.                 {
  42.                     m_ed.WriteMessage("\n第一条曲线与第二条曲线交点:{0}", m_pt);
  43.                 }
  44.                 m_ed.WriteMessage("\n===");
  45.                 m_ints.Clear();
  46.                 m_cur2.IntersectWith(m_cur1, Intersect.OnBothOperands, new Plane(), m_ints, 0, 0); //得出的所有交点在c2曲线上
  47.                 foreach (Point3d m_pt in m_ints)
  48.                 {
  49.                     m_ed.WriteMessage("\n第二条曲线与第条曲线一交点:{0}", m_pt);
  50.                 }
  51.                 m_tr.Commit();
  52.             }
  53.         }
  54.     }
  55. }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2020-6-11 15:26:53 | 显示全部楼层
学习了,谢谢!!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 23:55 , Processed in 0.166496 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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