|
用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>[assembly: CommandClass(typeof(Sample.LineToPipeOverule))]</p><p>namespace Sample</p><p>{</p><p> class LineToPipeOverule</p><p> {</p><p> [CommandMethod("LineToPipe")]</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> [CommandMethod("EndOverRule")]</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>
复制代码 |
|