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; }
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; }