找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2943|回复: 6

[分享] C#实现JOIN

[复制链接]

已领礼包: 6个

财富等级: 恭喜发财

发表于 2014-8-17 01:55:55 | 显示全部楼层 |阅读模式

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

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

×
   
  1.      [CommandMethod("joinPline")]
  2.         static public void joinPolylines()
  3.         {
  4.             PromptEntityResult pEntrs;
  5.             PromptEntityOptions peo1 = new PromptEntityOptions("\nSelect source polyline : ");
  6.             peo1.SetRejectMessage("\nInvalid selection...");
  7.             peo1.AddAllowedClass(typeof(Polyline), true);
  8.             peo1.AddAllowedClass(typeof(Polyline2d), true);
  9.             peo1.AddAllowedClass(typeof(Polyline3d), true);
  10.             pEntrs = Application.DocumentManager.MdiActiveDocument.Editor.GetEntity(peo1);
  11.             if (PromptStatus.OK != pEntrs.Status)
  12.                 return;
  13.             ObjectId srcId = pEntrs.ObjectId;
  14.             PromptEntityOptions peo2 = new PromptEntityOptions("\nSelect polyline to join : ");
  15.             peo2.SetRejectMessage("\nInvalid selection...");
  16.             peo2.AddAllowedClass(typeof(Polyline), true);
  17.             peo2.AddAllowedClass(typeof(Polyline2d), true);
  18.             peo2.AddAllowedClass(typeof(Polyline3d), true);
  19.             pEntrs = Application.DocumentManager.MdiActiveDocument.Editor.GetEntity(peo2);
  20.             if (PromptStatus.OK != pEntrs.Status)
  21.                 return;
  22.             ObjectId joinId = pEntrs.ObjectId;
  23.             Transaction trans = null;
  24.             try
  25.             {
  26.                 using (trans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction())
  27.                 {
  28.                     Entity srcPLine = trans.GetObject(srcId, OpenMode.ForRead) as Entity;
  29.                     Entity addPLine = trans.GetObject(joinId, OpenMode.ForRead) as Entity;
  30.                     srcPLine.UpgradeOpen();
  31.                     srcPLine.JoinEntity(addPLine);
  32.                     addPLine.UpgradeOpen();
  33.                     addPLine.Erase();
  34.                     trans.Commit();
  35.                 }
  36.             }
  37.             catch (System.Exception ex)
  38.             {
  39.                 Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(ex.Message);
  40.             }
  41.         }

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

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-8-17 07:21:14 来自手机 | 显示全部楼层
这个JoinEntity在高版本上第一条线如果是Spline就可以连接任意首尾相连的Curve?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-17 19:17:37 来自手机 | 显示全部楼层
我记得我以前写过ge曲线实现的join有时间贴上 这个通用 呵呵
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-18 22:37:19 | 显示全部楼层
  1. public static Spline ConvertNurbCurve3d(NurbCurve3d nc3d)
  2.         {
  3.             DoubleCollection knots = new DoubleCollection();
  4.             foreach (double knot in nc3d.Knots)
  5.             {
  6.                 knots.Add(knot);
  7.             }
  8.             NurbCurve3dData ncdata = nc3d.DefinitionData;
  9.             return
  10.                 new Spline(
  11.                     ncdata.Degree,
  12.                     ncdata.Rational,
  13.                     nc3d.IsClosed(),
  14.                     ncdata.Periodic,
  15.                     ncdata.ControlPoints,
  16.                     knots,
  17.                     ncdata.Weights,
  18.                     0,
  19.                     nc3d.Knots.Tolerance);
  20.         }
  21.         public static NurbCurve3d ConvertNurbCurve3d(Spline spl)
  22.         {
  23.             KnotCollection knots = new KnotCollection();
  24.             foreach (double knot in spl.NurbsData.GetKnots())
  25.             {
  26.                 knots.Add(knot);
  27.             }
  28.             NurbsData ndata = spl.NurbsData;
  29.             return
  30.                 new NurbCurve3d(
  31.                     ndata.Degree,
  32.                     knots,
  33.                     ndata.GetControlPoints(),
  34.                     ndata.Periodic);
  35.         }
  36.         [CommandMethod("t4")]
  37.         public static void Test4()
  38.         {
  39.             PromptSelectionResult res = CadHelper.Editor.GetSelection();
  40.             using (DBTransaction tr = new DBTransaction())
  41.             {
  42.                 Spline c1 = (Spline)tr.GetObject(res.Value[0].ObjectId, OpenMode.ForRead);
  43.                 Spline c2 = (Spline)tr.GetObject(res.Value[1].ObjectId, OpenMode.ForRead);
  44.                 NurbCurve3d nc3d = ConvertNurbCurve3d(c1);
  45.                 nc3d.JoinWith(ConvertNurbCurve3d(c2));
  46.                 Spline spl = ConvertNurbCurve3d(nc3d);
  47.                 tr.OpenCurrentSpace();
  48.                 tr.AddEntity(spl);
  49.             }
  50.         }

曲线转换类 我贴在mj了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

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

使用道具 举报

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

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 09:56 , Processed in 0.419924 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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