示例#1
0
        public void DrawPath(
            IShape2D path,
            Matrix4D transform,
            Color color,
            short lineWeight,
            bool filled,
            bool forText,
            double extrusion)
        {
            if (!path.HasSegments)
            {
                return;
            }
            IClippingTransformer transformer = (IClippingTransformer)this.wireframe_0.GetTransformer().Clone();

            transformer.SetPreTransform(transform);
            if (extrusion == 0.0)
            {
                IShape4D shape1 = (IShape4D) new FlatShape4D(path, filled);
                IShape4D shape2 = transformer.Transform(shape1);
                if (shape2.IsEmpty)
                {
                    return;
                }
                this.iwireframeGraphicsFactory2_0.BeginGeometry(this.dxfEntity_0, this.wireframe_0, this.wireframe_0.GetPlotColor(this.dxfEntity_0, color), false, filled, !filled, true);
                this.iwireframeGraphicsFactory2_0.CreateShape(this.dxfEntity_0, shape2);
                this.iwireframeGraphicsFactory2_0.EndGeometry();
            }
            else
            {
                IList <Polyline2D> flattened  = (IList <Polyline2D>)ShapeTool.GetFlattened(path, this.wireframe_0.Config.ShapeFlattenEpsilon);
                IList <Polyline4D> polylines1 = DxfUtil.smethod_39(flattened, filled, transformer);
                ArgbColor          plotColor  = this.wireframe_0.GetPlotColor(this.dxfEntity_0, color);
                Class940.smethod_3(this.dxfEntity_0, this.wireframe_0, this.iwireframeGraphicsFactory2_0, plotColor, forText, false, true, polylines1);
                transformer.SetPreTransform(Transformation4D.Translation(0.0, 0.0, extrusion));
                IList <Polyline4D> polylines2 = DxfUtil.smethod_39(flattened, filled, transformer);
                Class940.smethod_3(this.dxfEntity_0, this.wireframe_0, this.iwireframeGraphicsFactory2_0, plotColor, forText, false, true, polylines2);
                Polyline4D polyline4D1 = new Polyline4D(2);
                polyline4D1.Add(Vector4D.Zero);
                polyline4D1.Add(Vector4D.Zero);
                IList <Polyline4D> polylines3 = (IList <Polyline4D>) new List <Polyline4D>(1);
                polylines3.Add(polyline4D1);
                for (int index1 = polylines1.Count - 1; index1 >= 0; --index1)
                {
                    Polyline4D polyline4D2 = polylines1[index1];
                    Polyline4D polyline4D3 = polylines2[index1];
                    for (int index2 = polyline4D2.Count - 1; index2 >= 0; --index2)
                    {
                        polyline4D1[0] = polyline4D2[index2];
                        polyline4D1[1] = polyline4D3[index2];
                        Class940.smethod_2(this.dxfEntity_0, this.wireframe_0, this.iwireframeGraphicsFactory2_0, plotColor, forText, false, true, polylines3);
                    }
                }
            }
        }
示例#2
0
        public override void DrawInternal(
            DrawContext.Wireframe context,
            IWireframeGraphicsFactory2 graphicsFactory)
        {
            if (this.list_0.Count == 0)
            {
                return;
            }
            DxfLayer      layer           = this.GetLayer((DrawContext)context);
            int           minElementCount = this.method_15();
            DxfMLineStyle style           = this.Style;

            for (int elementIndex = 0; elementIndex < style.Elements.Count; ++elementIndex)
            {
                DxfMLineStyle.Element element = style.Elements[elementIndex];
                IList <Polyline4D>    polylines4D;
                IList <IShape4D>      shapes;
                this.GetPolylines4D((DrawContext)context, elementIndex, minElementCount, element, context.GetTransformer(), out polylines4D, out shapes);
                ArgbColor color = DxfEntity.GetColor(context.Config.IndexedColors, element.Color, context.ByBlockColor, context.ByBlockDxfColor, layer);
                if (polylines4D.Count > 0)
                {
                    foreach (Polyline4D polyline4D in (IEnumerable <Polyline4D>)polylines4D)
                    {
                        if (polyline4D.Count <= 2)
                        {
                            polyline4D.Closed = false;
                        }
                    }
                    Class940.smethod_3((DxfEntity)this, context, graphicsFactory, color, false, false, true, polylines4D);
                }
                if (shapes != null)
                {
                    Class940.smethod_23((IPathDrawer) new Class396((DxfEntity)this, context, graphicsFactory), (IEnumerable <IShape4D>)shapes, element.Color, context.GetLineWeight((DxfEntity)this));
                }
            }
            IList <Polyline4D> polylines1 = this.method_14((DrawContext)context, context.GetTransformer());

            if (polylines1.Count > 0)
            {
                foreach (Polyline4D polyline4D in (IEnumerable <Polyline4D>)polylines1)
                {
                    if (polyline4D.Count <= 2)
                    {
                        polyline4D.Closed = false;
                    }
                }
                ArgbColor color = this.method_13((DrawContext)context, layer);
                Class940.smethod_3((DxfEntity)this, context, graphicsFactory, color, false, false, true, polylines1);
            }
            if (!style.IsFillOn)
            {
                return;
            }
            IList <Polyline4D> polylines2 = this.method_16(context.GetTransformer());

            if (polylines2 == null || polylines2.Count <= 0)
            {
                return;
            }
            Class940.smethod_2((DxfEntity)this, context, graphicsFactory, DxfEntity.GetColor(context.Config.IndexedColors, style.FillColor, context.ByBlockColor, context.ByBlockDxfColor, this.GetLayer((DrawContext)context)), false, true, false, polylines2);
        }