예제 #1
0
        private ArgbColor method_13(DrawContext context, DxfLayer layer)
        {
            int           index = this.list_0[0].Elements.Count - 1;
            DxfMLineStyle style = this.Style;

            return(index < 0 || index >= style.Elements.Count ? context.GetPlotColor((DxfEntity)this) : DxfEntity.GetColor(context.Config.IndexedColors, style.Elements[index].Color, context.ByBlockColor, context.ByBlockDxfColor, layer));
        }
예제 #2
0
        public void WriteMLineStyleTest()
        {
            var mlineStyle = new DxfMLineStyle();

            mlineStyle.StyleName   = "<name>";
            mlineStyle.Description = "<description>";
            mlineStyle.FillColor   = DxfColor.FromRawValue(1);
            mlineStyle.StartAngle  = 99.9;
            mlineStyle.EndAngle    = 100.0;
            mlineStyle.Elements.Add(new DxfMLineStyle.DxfMLineStyleElement()
            {
                Offset = 3.0, Color = DxfColor.FromRawValue(3), LineType = "tres"
            });
            mlineStyle.Elements.Add(new DxfMLineStyle.DxfMLineStyleElement()
            {
                Offset = 4.0, Color = DxfColor.FromRawValue(4), LineType = "quatro"
            });
            var file = new DxfFile();

            file.Header.Version = DxfAcadVersion.R14;
            file.Objects.Add(mlineStyle);
            VerifyFileContains(file, @"
100
AcDbMlineStyle
  2
<name>
 70
0
  3
<description>
 62
1
 51
99.9
 52
100.0
 71
2
 49
3.0
 62
3
  6
tres
 49
4.0
 62
4
  6
quatro
");
        }
예제 #3
0
파일: Class314.cs 프로젝트: 15831944/WW
        public override void ResolveReferences(Class374 modelBuilder)
        {
            base.ResolveReferences(modelBuilder);
            DxfMLineStyle handledObject = (DxfMLineStyle)this.HandledObject;

            if (this.list_1 == null)
            {
                return;
            }
            foreach (Class730 class730 in this.list_1)
            {
                class730.ResolveReferences(modelBuilder, handledObject);
            }
        }
예제 #4
0
파일: Class306.cs 프로젝트: 15831944/WW
        public override void ResolveReferences(Class374 modelBuilder)
        {
            base.ResolveReferences(modelBuilder);
            DxfMLine entity = (DxfMLine)this.Entity;

            if (this.ulong_6 == 0UL)
            {
                return;
            }
            DxfMLineStyle dxfMlineStyle = modelBuilder.method_4 <DxfMLineStyle>(this.ulong_6);

            if (dxfMlineStyle == null)
            {
                return;
            }
            entity.Style = dxfMlineStyle;
        }
예제 #5
0
        public override void CopyFrom(DxfHandledObject from, CloneContext cloneContext)
        {
            base.CopyFrom(from, cloneContext);
            DxfMLine dxfMline = (DxfMLine)from;

            if (dxfMline.Style != null)
            {
                if (cloneContext.SourceModel == cloneContext.TargetModel)
                {
                    this.Style = dxfMline.Style;
                }
                else if ((this.Style = cloneContext.TargetModel.MLineStyles.Find(dxfMline.Style.Name)) == null)
                {
                    switch (cloneContext.ReferenceResolutionType)
                    {
                    case ReferenceResolutionType.IgnoreMissing:
                        this.Style = cloneContext.TargetModel.DefaultMLineStyle;
                        break;

                    case ReferenceResolutionType.CloneMissing:
                        DxfMLineStyle dxfMlineStyle = (DxfMLineStyle)dxfMline.Style.Clone(cloneContext);
                        if (!cloneContext.CloneExact)
                        {
                            cloneContext.TargetModel.MLineStyles.Add(dxfMlineStyle);
                        }
                        this.Style = dxfMlineStyle;
                        break;

                    case ReferenceResolutionType.FailOnMissing:
                        throw new DxfException(string.Format("Could not resolve reference to mline style with name {0}.", (object)dxfMline.Style.Name));
                    }
                }
            }
            this.double_1         = dxfMline.double_1;
            this.mlineAlignment_0 = dxfMline.mlineAlignment_0;
            this.mlineFlags_0     = dxfMline.mlineFlags_0;
            this.point3D_0        = dxfMline.point3D_0;
            this.vector3D_0       = dxfMline.vector3D_0;
            foreach (DxfMLine.Segment segment in dxfMline.list_0)
            {
                this.list_0.Add(segment.Clone(cloneContext));
            }
        }
예제 #6
0
        public void ResolveReferences(Class374 modelBuilder, DxfMLineStyle mlineStyle)
        {
            DxfLineType lineType1 = (DxfLineType)null;

            if (this.nullable_1.HasValue)
            {
                lineType1 = modelBuilder.method_4 <DxfLineType>(this.nullable_1.Value);
            }
            else if (this.nullable_0.HasValue)
            {
                if (this.nullable_0.Value == (int)short.MaxValue)
                {
                    lineType1 = modelBuilder.Model.ByLayerLineType;
                }
                else if (this.nullable_0.Value == 32766)
                {
                    lineType1 = modelBuilder.Model.ByBlockLineType;
                }
                else
                {
                    int num = -1;
                    foreach (DxfLineType lineType2 in (KeyedDxfHandledObjectCollection <string, DxfLineType>)modelBuilder.Model.LineTypes)
                    {
                        if (lineType2 != modelBuilder.Model.ByLayerLineType && lineType2 != modelBuilder.Model.ByBlockLineType)
                        {
                            ++num;
                        }
                        if (num == this.nullable_0.Value)
                        {
                            lineType1 = lineType2;
                            break;
                        }
                    }
                }
            }
            else
            {
                lineType1 = modelBuilder.Model.ByLayerLineType;
            }
            mlineStyle.Elements.Add(new DxfMLineStyle.Element(this.double_0, this.color_0, lineType1));
        }
예제 #7
0
파일: Class739.cs 프로젝트: 15831944/WW
 public void Visit(DxfMLineStyle mlineStyle)
 {
 }
예제 #8
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);
        }
예제 #9
0
 public void Visit(DxfMLineStyle mlineStyle)
 {
     this.bool_0 = true;
 }
예제 #10
0
파일: Class314.cs 프로젝트: 15831944/WW
 public Class314(DxfMLineStyle mlineStyle)
     : base((DxfHandledObject)mlineStyle)
 {
 }