using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using App = Autodesk.AutoCAD.ApplicationServices;
using Gi = Autodesk.AutoCAD.GraphicsInterface;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Colors;
using Autodesk.AutoCAD.Geometry;
namespace test01
{
public class Class1
{
[CommandMethod("Test_hatch")]
public static void Test_hatch()
{
ObjectOverrule.AddOverrule(RXClass.GetClass(typeof(Polyline)), TestHatchDrawOverruleClass.Instance, true);
}
}
public class TestHatchDrawOverruleClass : Gi.DrawableOverrule
{
public static TestHatchDrawOverruleClass Instance = new TestHatchDrawOverruleClass();
public TestHatchDrawOverruleClass() { }
public override bool WorldDraw(Gi.Drawable _d, Gi.WorldDraw _wd)
{
if (_d is Polyline pline)
{
if (pline.Closed)
{
Point2dCollection pnts = new Point2dCollection();
DoubleCollection dbls = new DoubleCollection();
for (int i = 0; i < pline.NumberOfVertices; i++)
{
pnts.Add(pline.GetPoint2dAt(i));
dbls.Add(pline.GetBulgeAt(i));
}
pnts.Add(pline.GetPoint2dAt(0));
dbls.Add(pline.GetBulgeAt(0));
Hatch h = new Hatch();
h.SetHatchPattern(HatchPatternType.PreDefined, "ANSI31");
h.ColorIndex = 7;
h.PatternAngle = 0;
h.PatternScale = 10;
h.AppendLoop(HatchLoopTypes.Default, pnts, dbls);
h.WorldDraw(_wd);
}
}
return base.WorldDraw(_d, _wd);
}
}
}