private void GetPolylines4D( DrawContext context, int elementIndex, int minElementCount, DxfMLineStyle.Element styleElement, IClippingTransformer transformer, out IList <Polyline4D> polylines4D, out IList <IShape4D> shapes) { WW.Math.Point3D point3D0 = this.point3D_0; bool closed = this.Closed; IList <Polyline3D> polyline3DList = (IList <Polyline3D>) new List <Polyline3D>(); IList <FlatShape4D> resultShapes = (IList <FlatShape4D>) new List <FlatShape4D>(); if (minElementCount == 0) { Polyline3D polyline3D = new Polyline3D(closed); foreach (DxfMLine.Segment segment in this.list_0) { polyline3D.Add(segment.Position); } if (polyline3D.Count > 0) { DxfUtil.smethod_2(context.Config, polyline3DList, resultShapes, (IList <Polyline3D>) new Polyline3D[1] { polyline3D }, styleElement.LineType, this.vector3D_0, 1.0, transformer.LineTypeScaler); } } else { IList <Polyline3D> polylines = (IList <Polyline3D>) new List <Polyline3D>(); Polyline3D polyline3D = new Polyline3D(); bool flag = false; foreach (DxfMLine.Segment segment in this.list_0) { WW.Math.Vector3D miterDirection = segment.MiterDirection; WW.Math.Point3D position = segment.Position; if (elementIndex < segment.Elements.Count) { DxfMLine.Segment.Element element = segment.Elements[elementIndex]; WW.Math.Point3D point3D1 = position; if (element.Parameters.Count > 0) { WW.Math.Point3D point3D2 = point3D1 + miterDirection * element.Parameters[0]; if (element.Parameters.Count > 1) { for (int index = 1; index < element.Parameters.Count; index += 2) { WW.Math.Point3D point3D3 = point3D2 + segment.Direction * element.Parameters[index]; polyline3D.Add(point3D3); if (index + 1 < element.Parameters.Count) { WW.Math.Point3D point3D4 = point3D2 + segment.Direction * element.Parameters[index + 1]; polyline3D.Add(point3D4); polylines.Add(polyline3D); polyline3D = new Polyline3D(); } } } else if (polyline3D.Count > 0) { polyline3D.Add(point3D2); polylines.Add(polyline3D); polyline3D = new Polyline3D(); } } else if (element.AreaFillParameters.Count > 0) { flag = true; } } } DxfMLine.Segment segment1 = this.list_0[this.list_0.Count - 1]; if (closed && polyline3D.Count > 0) { DxfMLine.Segment segment2 = this.list_0[0]; if (elementIndex < segment2.Elements.Count) { DxfMLine.Segment.Element element = segment2.Elements[elementIndex]; WW.Math.Point3D position = segment2.Position; if (element.Parameters.Count > 0) { WW.Math.Vector3D miterDirection = segment2.MiterDirection; WW.Math.Point3D point3D = position + miterDirection * element.Parameters[0]; polyline3D.Add(point3D); } } } if (polyline3D.Count > 0) { polylines.Add(polyline3D); } if (flag) { polyline3DList.Add(polyline3D); } else if (polylines.Count > 0) { DxfUtil.smethod_2(context.Config, polyline3DList, resultShapes, polylines, styleElement.LineType, this.vector3D_0, 1.0, transformer.LineTypeScaler); } } polylines4D = DxfUtil.smethod_36(polyline3DList, false, transformer); shapes = DxfUtil.smethod_37((ICollection <FlatShape4D>)resultShapes, transformer); }
private void GetPolylines4D( DrawContext context, IClippingTransformer transformer, out IList <Polyline4D> polylines4D, out IList <IShape4D> shapes) { IList <WW.Math.Geometry.Polyline3D> polyline3DList = (IList <WW.Math.Geometry.Polyline3D>) new List <WW.Math.Geometry.Polyline3D>(4); IList <FlatShape4D> resultShapes = (IList <FlatShape4D>)null; int count = this.list_0.Count; if (count > 1) { bool flag = true; if (this.FirstEdgeInvisible) { flag = false; } if (this.SecondEdgeInvisible) { flag = false; } if (count > 2) { if (this.ThirdEdgeInvisible) { flag = false; } if (count > 3 && this.FourthEdgeInvisible) { flag = false; } } if (flag) { WW.Math.Geometry.Polyline3D polyline3D = new WW.Math.Geometry.Polyline3D(count, count > 2); for (int index = 0; index < count; ++index) { polyline3D.Add(this.list_0[index]); } polyline3DList.Add(polyline3D); } else { if (!this.FirstEdgeInvisible) { polyline3DList.Add(new WW.Math.Geometry.Polyline3D(new WW.Math.Point3D[2] { this.list_0[0], this.list_0[1] })); } if (count > 2) { if (!this.SecondEdgeInvisible) { polyline3DList.Add(new WW.Math.Geometry.Polyline3D(new WW.Math.Point3D[2] { this.list_0[1], this.list_0[2] })); } if (this.Points.Count == 3) { if (!this.ThirdEdgeInvisible) { polyline3DList.Add(new WW.Math.Geometry.Polyline3D(new WW.Math.Point3D[2] { this.list_0[2], this.list_0[0] })); } } else if (this.Points.Count == 4) { if (!this.ThirdEdgeInvisible) { polyline3DList.Add(new WW.Math.Geometry.Polyline3D(new WW.Math.Point3D[2] { this.list_0[2], this.list_0[3] })); } if (!this.FourthEdgeInvisible) { polyline3DList.Add(new WW.Math.Geometry.Polyline3D(new WW.Math.Point3D[2] { this.list_0[3], this.list_0[0] })); } } } } IList <WW.Math.Geometry.Polyline3D> polylines = (IList <WW.Math.Geometry.Polyline3D>) new List <WW.Math.Geometry.Polyline3D>(4); resultShapes = (IList <FlatShape4D>) new List <FlatShape4D>(); DxfUtil.smethod_2(context.Config, polyline3DList, resultShapes, polylines, this.GetLineType(context), Vector3D.ZAxis, context.TotalLineTypeScale * this.LineTypeScale, transformer.LineTypeScaler); } polylines4D = DxfUtil.smethod_36(polyline3DList, false, transformer); shapes = DxfUtil.smethod_37((ICollection <FlatShape4D>)resultShapes, transformer); }