Exemple #1
0
        public static List<string> Arco(Arco a)
        {
            List<string> movs = new List<string>();

            if (a.Sentido == 'H')
            {
                G02_ArcoH mov = new G02_ArcoH();

                mov.Inicio.X = a.PuntoInicio.X;
                mov.Inicio.Y = a.PuntoInicio.Y;
                mov.Inicio.Z = a.PuntoInicio.Z;

                mov.Fin.X = a.PuntoFin.X;
                mov.Fin.Y = a.PuntoFin.Y;
                mov.Fin.Z = a.PuntoFin.Z;

                mov.Centro = new G.Objetos.Punto(a.Centro);

                movs.Add(mov.ToString());
            }
            else
            {
                G03_ArcoA mov = new G03_ArcoA();

                mov.Inicio.X = a.PuntoInicio.X;
                mov.Inicio.Y = a.PuntoInicio.Y;
                mov.Inicio.Z = a.PuntoInicio.Z;

                mov.Fin.X = a.PuntoFin.X;
                mov.Fin.Y = a.PuntoFin.Y;
                mov.Fin.Z = a.PuntoFin.Z;

                mov.Centro = new G.Objetos.Punto(a.Centro);

                mov.Radio = a.Radio;

                movs.Add(mov.ToString());
            }

            return movs;
        }
Exemple #2
0
        private Arco ReadArco(ref ParCodigoValor cod)
        {
            var arco = new Arco();
            Vector3f centro = Vector3f.Nulo;
            Vector3f normal = Vector3f.UnitarioZ;
            //Dictionary<ApplicationRegistry, XData> xData = new Dictionary<ApplicationRegistry, XData>();
            cod = this.ReadCodePair();
            while (cod.Cod != 0)
            {
                switch (cod.Cod)
                {
                    case 5:
                        arco.Handle = cod.Val;
                        cod = this.ReadCodePair();
                        break;
                    //case 8: //layer code
                    //    arco.Layer = this.GetLayer(cod.Val);
                    //    cod = this.ReadCodePair();
                    //    break;
                    //case 62: //aci color code
                    //    arco.Color = new AciColor(short.Parse(code.Value));
                    //    code = this.ReadCodePair();
                    //    break;
                    //case 6: //type line code
                    //    arc.LineType = this.GetLineType(code.Value);
                    //    code = this.ReadCodePair();
                    //    break;
                    case 10:
                        centro.X = float.Parse(cod.Val);
                        cod = this.ReadCodePair();
                        break;
                    case 20:
                        centro.Y = float.Parse(cod.Val);
                        cod = this.ReadCodePair();
                        break;
                    case 30:
                        centro.Z = float.Parse(cod.Val);
                        cod = this.ReadCodePair();
                        break;
                    case 40:
                        arco.Radio = float.Parse(cod.Val);
                        cod = this.ReadCodePair();
                        break;
                    case 50:
                        arco.AnguloInicio = float.Parse(cod.Val);
                        cod = this.ReadCodePair();
                        break;
                    case 51:
                        arco.AnguloFin = float.Parse(cod.Val);
                        cod= this.ReadCodePair();
                        break;
                    //case 39:
                    //    arc.Thickness = float.Parse(code.Value);
                    //    code = this.ReadCodePair();
                    //    break;
                    case 210:
                        normal.X = float.Parse(cod.Val);
                        cod = this.ReadCodePair();
                        break;
                    case 220:
                        normal.Y = float.Parse(cod.Val);
                        cod = this.ReadCodePair();
                        break;
                    case 230:
                        normal.Z = float.Parse(cod.Val);
                        cod = this.ReadCodePair();
                        break;
                    //case 1001:
                    //    XData xDataItem = this.ReadXDataRecord(code.Value, ref code);
                    //    xData.Add(xDataItem.ApplicationRegistry, xDataItem);
                    //    break;
                    default:
                        if (cod.Cod >= 1000 && cod.Cod <= 1071)
                            throw new DxfInvalidCodeValueEntityException(cod.Cod, cod.Val,
                                                                         this.archivo, "The extended data of an entity must start with the application registry code " + this.fileLine);
                        cod = this.ReadCodePair();
                        break;
                }
            }

            //arc.XData = xData;
            arco.Centro = centro;
            arco.Normal = normal;

            Vector3f PuntoInicio = Vector3f.Nulo;
            Vector3f PuntoFin = Vector3f.Nulo;

            PuntoInicio.X = arco.Centro.X + arco.Radio * (float)Math.Cos(MathHelper.DegToRad * arco.AnguloInicio);
            PuntoInicio.Y = arco.Centro.Y + arco.Radio * (float)Math.Sin(MathHelper.DegToRad * arco.AnguloInicio);
            //por ahora queda en duro
            PuntoInicio.Z = arco.Centro.Z;

            PuntoFin.X = arco.Centro.X + arco.Radio * (float)Math.Cos(MathHelper.DegToRad * arco.AnguloFin);
            PuntoFin.Y = arco.Centro.Y + arco.Radio * (float)Math.Sin(MathHelper.DegToRad * arco.AnguloFin);
            //por ahora queda en duro
            PuntoFin.Z = arco.Centro.Z;

            arco.PuntoInicio = PuntoInicio;
            arco.PuntoFin = PuntoFin;

            //por defecto lo ponemos en antihorario
            arco.Sentido = 'A';

            return arco;
        }