إنشاء مستطيل كخطوط متعددة وملؤه بالخطوط المتقاطعة

كيفية إنشاء مستطيل كخطوط متعددة وملؤه بالخطوط المتقاطعة

المشكلة: كيفية إنشاء مستطيل كخطوط متعددة وملؤه بالخطوط المتقاطعة (CADNET-1351).

نصائح: للقيام بذلك، أنشئ CadLwPolyline وأضف إحداثيات النقاط إليه، استخدم CadHatch للعمل مع اللون واستخدم CadEdgeBoundaryPath للاتصال، استخدم CadHatch للعمل مع الزوايا وCadHatchPatternData للنمط.

مثال:

CadLwPolyline polyline = new CadLwPolyline();
polyline.Coordinates = new List<Cad2DPoint>();
polyline.Coordinates.Add(new Cad2DPoint(-5d, -5d));
polyline.Coordinates.Add(new Cad2DPoint(-5d, 10d));
polyline.Coordinates.Add(new Cad2DPoint(20d, 10d));
polyline.Coordinates.Add(new Cad2DPoint(20d, -5d));
polyline.Flag = CadLwPolylineFlag.Closed;
polyline.ConstantWidth = 0.1;
CadHatch hatch = new CadHatch();
hatch.PatternName = "SOLID";
hatch.ColorId = 1; // index of color: https://gohtx.com/acadcolors.php
hatch.HatchPatternType = 1; // 0 = User-defined; 1 = Predefined; 2 = Custom, we support only predefined now
hatch.BoundaryPaths = new List<CadHatchBoundaryPathContainer>();
CadHatchBoundaryPathContainer container = new CadHatchBoundaryPathContainer();
container.BoundaryPath = new List<ICadBoundaryPath>();
CadEdgeBoundaryPath path = new CadEdgeBoundaryPath();
path.Objects = new List<ICadBoundaryPathEntity>();
path.Objects.Add(new CadBoundaryPathLine() { FirstPoint = new Point2D(-5, -5), SecondPoint = new Point2D(-5, 10) });
path.Objects.Add(new CadBoundaryPathLine() { FirstPoint = new Point2D(-5, 10), SecondPoint = new Point2D(20, 10) });
path.Objects.Add(new CadBoundaryPathLine() { FirstPoint = new Point2D(20, 10), SecondPoint = new Point2D(20, -5) });
path.Objects.Add(new CadBoundaryPathLine() { FirstPoint = new Point2D(20, -5), SecondPoint = new Point2D(-5, -5) });
container.BoundaryPath.Add(path);
hatch.BoundaryPaths.Add(container);
List<CadBaseEntity> entities = new List<CadBaseEntity>();
entities.Add(polyline);
entities.Add(hatch);
cadImage.Entities = entities.ToArray();
cadImage.UpdateSize();
CadHatch hatch = new CadHatch();
hatch.PatternName = "ANGLE"; // only known values are available here
hatch.ColorId = 1;
hatch.HatchPatternType = 1; //
hatch.BoundaryPaths = new List<CadHatchBoundaryPathContainer>();
CadHatchBoundaryPathContainer container = new CadHatchBoundaryPathContainer();
container.BoundaryPath = new List<ICadBoundaryPath>();
CadEdgeBoundaryPath path = new CadEdgeBoundaryPath();
path.Objects = new List<ICadBoundaryPathEntity>();
path.Objects.Add(new CadBoundaryPathLine(){FirstPoint = new Point2D(-5, -5), SecondPoint = new Point2D(-5,10)});
path.Objects.Add(new CadBoundaryPathLine() { FirstPoint = new Point2D(-5, 10), SecondPoint = new Point2D(20, 10) });
path.Objects.Add(new CadBoundaryPathLine() { FirstPoint = new Point2D(20, 10), SecondPoint = new Point2D(20, -5) });
path.Objects.Add(new CadBoundaryPathLine() { FirstPoint = new Point2D(20, -5), SecondPoint = new Point2D(-5, -5) });
container.BoundaryPath.Add(path);
hatch.BoundaryPaths.Add(container);
hatch.PatternDefinitions = new List<CadHatchPatternData>();
CadHatchPatternData data1 = new CadHatchPatternData();
data1.LineBasePoint = new Cad3DPoint();
data1.DashLengths = new List<double>();
data1.DashLengths.Add(4);
data1.DashLengths.Add(1.5);
data1.DashLengthCount = (short)data1.DashLengths.Count;
data1.LineOffset = new Cad2DPoint(0d, 5.5d);
CadHatchPatternData data2 = new CadHatchPatternData();
data2.LineBasePoint = new Cad3DPoint();
data2.DashLengths = new List<double>();
data2.DashLengths.Add(4);
data2.DashLengths.Add(-1.5);
data2.LineAngle = 90;
data2.DashLengthCount = (short)data2.DashLengths.Count;
data2.LineOffset = new Cad2DPoint(-5.5d, 0d);
hatch.PatternDefinitions.Add(data1);
hatch.PatternDefinitions.Add(data2);
hatch.NumberOfPatternDefinitions = (short)hatch.PatternDefinitions.Count;
List<CadBaseEntity> entities = new List<CadBaseEntity>();
entities.Add(polyline);
entities.Add(hatch);
cadImage.Entities = entities.ToArray();
cadImage.UpdateSize();