明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2004|回复: 3

Jig基点的问题

[复制链接]
发表于 2011-9-13 17:01:59 | 显示全部楼层 |阅读模式
先看文字移动时的图片

本帖子中包含更多资源

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

x
 楼主| 发表于 2011-9-13 17:04:07 | 显示全部楼层
本帖最后由 xgr 于 2011-9-13 17:07 编辑

问题是为什么第一次的JIG基点不在文字角上,而第二次就真确了。
下面是JIG代码
  1. #region CAD实体移动通用函数
  2.     public class CADJig
  3.         {
  4.             /// <summary>  
  5.             ///  入口函数  
  6.             /// </summary>  
  7.             /// <param name="ed">ed</param>  
  8.             /// <param name="lstEnt">实体列表</param>  
  9.             /// <param name="promp">提示</param>  
  10.             /// <returns></returns>  
  11.             public static bool Jig(Editor ed, List<Entity> lstEnt, Point3d pt, string promp)
  12.             {
  13.                 Jig jig = new Jig();
  14.                 jig.lstEnt = lstEnt;
  15.                 jig.ptBase = pt;
  16.                 jig.promp = promp;
  17.                 PromptResult prJig = ed.Drag(jig);
  18.                 if (prJig.Status != PromptStatus.OK)
  19.                 {
  20.                     return false;
  21.                 }
  22.                 else
  23.                 {
  24.                     return true;
  25.                 }
  26.             }
  27.         }

  28.         //本类是Jig,单独的实体或实体列表均可调用  

  29.         public class Jig : DrawJig
  30.         {
  31.             private List<Entity> _lstEnt; //移动的实体  
  32.             private Point3d _ptBase;   //基点  
  33.             private string _promp;   //提示  

  34.             /// <summary>  
  35.             /// 移动的实体  
  36.             /// </summary>  

  37.             public List<Entity> lstEnt
  38.             {
  39.                 set { _lstEnt = value; }
  40.             }

  41.             /// <summary>  
  42.             /// 基点  
  43.             /// </summary>  

  44.             public Point3d ptBase
  45.             {
  46.                 set { _ptBase = value; }
  47.                 get { return _ptBase; }
  48.             }


  49.             /// <summary>  
  50.             /// /提示  
  51.             /// </summary>  

  52.             public string promp
  53.             {
  54.                 set { _promp = value; }
  55.             }

  56.             private Point3d ptTo;   //插入点  

  57.             protected override SamplerStatus Sampler(JigPrompts prompts)
  58.             {
  59.                 JigPromptPointOptions optJigPoint = new JigPromptPointOptions(_promp);
  60.            
  61.                 optJigPoint.UserInputControls =
  62.                        UserInputControls.Accept3dCoordinates |
  63.                        UserInputControls.NoZeroResponseAccepted |
  64.                        UserInputControls.NoNegativeResponseAccepted |
  65.                        UserInputControls.NullResponseAccepted;

  66.                 optJigPoint.Keywords.Add("Undo", "Undo", "放弃(U)");

  67.                 PromptPointResult resJigPoint = prompts.AcquirePoint(optJigPoint);

  68.                 Point3d curPt = resJigPoint.Value;
  69.                 if (ptTo != curPt)
  70.                 {
  71.                     ptTo = curPt;
  72.                     return SamplerStatus.OK;
  73.                 }
  74.                 else
  75.                 {
  76.                     ptBase = ptTo;
  77.                     return SamplerStatus.NoChange;
  78.                 }
  79.             }

  80.             protected override bool WorldDraw(WorldDraw draw)
  81.             {
  82.                 try
  83.                 {
  84.                     Matrix3d mat = Matrix3d.Displacement(ptTo - ptBase);
  85.                     foreach (Entity ent in _lstEnt)
  86.                     {
  87.                         //移动每个实体  
  88.                         ent.TransformBy(mat);
  89.                         ent.RecordGraphicsModified(true);
  90.                         draw.Geometry.Draw(ent);
  91.                     }
  92.                 }

  93.                 catch (System.Exception)
  94.                 {
  95.                     return false;
  96.                 }
  97.                 return true;
  98.             }
  99.         }
  100. #endregion


发表于 2011-9-13 17:14:51 | 显示全部楼层
问下,你点击button的时候的鼠标点的左边怎么得到的?
这个是初始点,我没看到你是怎么将屏幕坐标转化为cad坐标的。
 楼主| 发表于 2011-9-13 17:43:18 | 显示全部楼层
我估计自己的问题是点击按钮关闭窗口时,基点就是设置为这个点。
JIG是网上下载的。我套用了一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 20:44 , Processed in 0.165729 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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