明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 641|回复: 2

[【IFoxCAD】] IFoxCad带有撤回的多段线Jig示例

  [复制链接]
发表于 2023-2-4 19:55 | 显示全部楼层 |阅读模式
本帖最后由 d1742647821 于 2023-2-9 18:48 编辑

带有撤回的多段线Jig示例,帮助大家学习使用IFox
  1. [CommandMethod("DrawPolyline")]
  2.     public static void DrawPolyline()
  3.     {
  4.         using var tr = new DBTrans();
  5.         var ed = Env.Editor;
  6.         var r1 = ed.GetPoint("\n选择起点");
  7.         if (r1.Status != PromptStatus.OK)
  8.             return;
  9.         var pt1 = r1.Value.Ucs2Wcs().Point2d();
  10.         var pl = new Polyline();
  11.         pl.AddVertexAt(0, pt1, 0, 0, 0);
  12.         pl.AddVertexAt(1, pt1, 0, 0, 0);
  13.         pl.SetDatabaseDefaults();
  14.         using var jig = new JigEx((mp, _) =>
  15.         {
  16.             pl.SetPointAt(pl.NumberOfVertices - 1, mp.Point2d());
  17.         });
  18.         jig.DatabaseEntityDraw(wd => wd.Geometry.Draw(pl));
  19.         var jppo= jig.SetOptions(pl.GetPoint3dAt(pl.NumberOfVertices - 1), CursorType.Crosshair, "\n选择下一点");
  20.         jppo.Keywords.Add("U", "U", "撤回(U)");
  21.         while (true)
  22.         {
  23.             jppo.BasePoint = pl.GetPoint3dAt(pl.NumberOfVertices - 1);
  24.             var r2 = ed.Drag(jig);
  25.             if (r2.Status == PromptStatus.OK)
  26.             {
  27.                 pl.AddVertexAt(pl.NumberOfVertices, jig.MousePointWcsLast.Point2d(), 0, 0, 0);
  28.             }
  29.             else if (r2.Status == PromptStatus.Keyword)
  30.             {
  31.                 switch (r2.StringResult.ToUpper())
  32.                 {
  33.                     case "U":
  34.                         if (pl.NumberOfVertices > 2)
  35.                         {
  36.                             pl.RemoveVertexAt(pl.NumberOfVertices - 2);
  37.                         }
  38.                         break;
  39.                 }
  40.             }
  41.             else
  42.             {
  43.                 if(pl.NumberOfVertices > 2)
  44.                 {
  45.                     pl.RemoveVertexAt(pl.NumberOfVertices - 1);
  46.                     tr.CurrentSpace.AddEntity(pl);
  47.                 }
  48.                 return;
  49.             }
  50.         }
  51.     }





个人B站主页有教学视频,欢迎捧场,点此进入!!!







本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 金钱 +5 收起 理由
MUSIC-DIE + 1 + 5 很给力!

查看全部评分

发表于 2023-2-4 21:24 | 显示全部楼层
谢谢楼主分享
发表于 2023-9-22 14:51 | 显示全部楼层
没有CAD原创舒服,总感觉一闪一闪的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-6 00:47 , Processed in 0.458035 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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