EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

萧闫子 发表于 2014-1-8 16:41:10

[规则重定义] 规则重定义

用AutoCAD.NET二次开发目前还不支持自定义对象,不过我们可以用一些其他的方法来实现自定义对象的效果,规则重定义可以控制对象的显示效果,即线可以显示成一根管,点可以显示成一个圆。下面看看规则重定义的例子把AutoCAD里面的直线变成一个空心管。
using System;<p>
</p><p>using Autodesk.AutoCAD.DatabaseServices;</p><p>using Autodesk.AutoCAD.Geometry;</p><p>using Autodesk.AutoCAD.Runtime;</p><p>using Autodesk.AutoCAD.GraphicsInterface;</p><p>
</p><p></p><p>namespace Sample</p><p>{</p><p>    class LineToPipeOverule</p><p>    {</p><p>      </p><p>      public void Start()</p><p>      {</p><p>            LineToPipe line=new LineToPipe(10);</p><p>            StartOverRule(RXClass.GetClass(typeof(Line)), line); </p><p>      }</p><p>
</p><p>      </p><p>      public void End()</p><p>      {</p><p>            EndOverRule();</p><p>      }</p><p>
</p><p>      /// <summary></p><p>      /// 启动重定义</p><p>      /// </summary></p><p>      /// <param name="CADClass">要重定义的类型</param></p><p>      /// <param name="overrule">把要重定义的类型定义为的对象</param></p><p>      public static void StartOverRule(RXClass CADClass, Overrule overrule)</p><p>      {</p><p>            Overrule.AddOverrule(CADClass, overrule, false);</p><p>            Overrule.Overruling = true;</p><p>      }</p><p>
</p><p>      /// <summary></p><p>      /// 关闭重定义</p><p>      /// </summary></p><p>      public static void EndOverRule()</p><p>      {</p><p>            Overrule.Overruling = false;</p><p>      }</p><p>    }</p><p>
</p><p>
</p><p>    /// <summary></p><p>    ///线显示成管</p><p>    /// </summary></p><p>    public class LineToPipe : DrawableOverrule</p><p>    {</p><p>      private double r;</p><p>      public LineToPipe(double R)</p><p>      {</p><p>            r = R;</p><p>      }</p><p>      public override bool WorldDraw(Drawable drawable, WorldDraw wd)</p><p>      {</p><p>            if (drawable is Line)</p><p>            {</p><p>                Line line = (Line)drawable;</p><p>                Circle circle = new Circle(line.StartPoint, line.EndPoint - line.StartPoint, r);</p><p>                ExtrudedSurface pipe = new ExtrudedSurface();</p><p>                pipe.CreateExtrudedSurface(circle, line.EndPoint - line.StartPoint, new SweepOptions());</p><p>                pipe.WorldDraw(wd);</p><p>                circle.Dispose();</p><p>                pipe.Dispose();</p><p>            }</p><p>            return true;</p><p>      }</p><p>    }</p><p>}</p>

慕容柔晴 发表于 2014-5-13 10:17:17

路过!!!
不发表意见……

车晶晶 发表于 2014-5-7 10:04:40

路过!!!
不发表意见……

順順 发表于 2014-3-14 11:30:26

(*^__^*) 嘻嘻……

audigy 发表于 2014-3-10 13:25:47

顶!!!!!!!!!!

老朽 发表于 2014-3-11 11:06:24

顶!!!!!!!!!!

国产008 发表于 2014-3-11 11:10:12

非常感谢!!

千里独行 发表于 2014-3-11 11:17:26

谢谢!!!
帮顶……

老朽 发表于 2014-3-11 11:21:29

谢谢BIM大神…

月之影 发表于 2014-3-14 11:18:46

路过!!!
帮顶……

MIMDxFzL 发表于 2014-3-14 11:22:10

顶!!!!!!!!!!

悠悠筱荷 发表于 2014-3-14 11:32:50

顶!!!!!!!!!!

风浪子 发表于 2014-5-7 10:12:15

顶......
楼下跟上.....

宇航员 发表于 2014-5-7 10:18:35

顶!!!!!!!!!!

教父 发表于 2014-5-13 10:22:07

顶起来…………
页: [1] 2
查看完整版本: [规则重定义] 规则重定义