CAD(C#) 您所在的位置:网站首页 cad动态块填充 CAD(C#)

CAD(C#)

2024-06-03 00:51| 来源: 网络整理| 查看: 265

      在CAD的二次开发中,有时会使用JIG技术来实现操作的动态性、交互,最常见的比如说是在CAD中定制自己的移动和复制,当然要保持CAD中原有的动态显示效果。

      在JIG中我们可以继承EntityJig和DrawJig,对于这两个类,那这两个类有什么区别呢?他们的使用场合又有什么区别呢?

     其实,他们之间在操作一些简单的实体的时候是没有多大区别的,硬要说区别的话,那就是在实现一个相同功能时DrawJig比EntityJig的代码简单一些。(注意:是指在操作简单的实体的时候,比如实体的数量就一个)。

        EntityJig:一般用于图元实体的拖动,要求先生成实体Entity

        protected override bool Update()        {            throw new NotImplementedException();        }

        protected override SamplerStatus Sampler(JigPrompts prompts)        {            throw new NotImplementedException();        }

        DrawJig:一般用于复杂图形的拖动

       protected override bool WorldDraw(Autodesk.AutoCAD.GraphicsInterface.WorldDraw draw)        {            throw new NotImplementedException();        }

        protected override SamplerStatus Sampler(JigPrompts prompts)        {            throw new NotImplementedException();        }

      在拖动一个实体的时候,不管是用EntityJig还是DrawJig效果都一样,但是当我们在处理多个实体的移动,我们要求鼠标可以实时动态显示要拖动的多个实体,这点,EntityJig却无法实现了,但如果是DrawJig却很容易实现。(下图是用DrawJig实现)

 而且对于动态生成实体(比如指定一个圆心,动态生成一个圆),用DrawJig中的WorlDraw可以灵活控制实现生成。

  相比之下,是不是发现DrawJig优胜于EntityJig(个人理解).

  下面贴出上图实现的代码:

代码  1  #region DrawJig动态拖动多个实体 2     public class DrawJigEnt : DrawJig 3     { 4         //变量 5         Point3d oldPt;//实体移动之前的位置 6         Point3d newPt;//实体移动之后的位置 7         Vector3d v;//实体移动的向量 8  9         List ents = new List();10         List oldPts = new List();11         public DrawJigEnt(List ents)12         {13             oldPt = Point3d.Origin;14             newPt = Point3d.Origin;15             v = new Vector3d();16             this.ents = ents;17 18             Autodesk.AutoCAD.DatabaseServices.Entity ent = ents[0];19             if (ent is BlockReference)20             {21                 BlockReference br = ent as BlockReference;22                 oldPt = br.Position;23             }24 25             for (int i = 1; i 


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有