public static void LerTodosOsBlocosEBuscarOsAtributos() { Document documentoAtivo = Application.DocumentManager.MdiActiveDocument; Database database = documentoAtivo.Database; using (Transaction acTrans = database.TransactionManager.StartTransaction()) { BlockTable blockTable; blockTable = acTrans.GetObject(database.BlockTableId, OpenMode.ForRead) as BlockTable; try { _lista = new List <AtributosDoBloco>(); foreach (string nome in ConstantesTubulacao.TubulacaoNomeDosBlocos) { BlockTableRecord blockTableRecord; blockTableRecord = acTrans.GetObject(blockTable[nome], OpenMode.ForRead) as BlockTableRecord; foreach (ObjectId objId_loopVariable in blockTableRecord) { BlockReference blocoDinamico; blocoDinamico = (BlockReference)acTrans.GetObject(objId_loopVariable, OpenMode.ForRead) as BlockReference; DynamicBlockReferencePropertyCollection properties = blocoDinamico.DynamicBlockReferencePropertyCollection; AtributosDoBloco Atributo1 = new AtributosDoBloco(); for (int i = 0; i < properties.Count; i++) { DynamicBlockReferenceProperty property = properties[i]; if (property.PropertyName == "Distance1") { Atributo1.Distancia = property.Value.ToString(); } } Atributo1.X = blocoDinamico.Position.X; Atributo1.Y = blocoDinamico.Position.Y; Atributo1.nomeBloco = blocoDinamico.Name; Atributo1.Handle = blocoDinamico.Handle.ToString(); Atributo1.Angulo = blocoDinamico.Rotation; _lista.Add(Atributo1); } continue; } } catch (Exception e) { FinalizaTarefasAposExcecao("Ocorreu um erro ao ler os blocos do AutoCAD.", e); } acTrans.Commit(); } }
public static void LerTodosOsBlocosEBuscarOsAtributos() { Document documentoAtivo = Application.DocumentManager.MdiActiveDocument; Database database = documentoAtivo.Database; using (Transaction acTrans = database.TransactionManager.StartTransaction()) { BlockTable blockTable; blockTable = acTrans.GetObject(database.BlockTableId, OpenMode.ForRead) as BlockTable; try { _lista = new List <AtributosDoBloco>(); BlockTableRecord blockTableRecord; blockTableRecord = acTrans.GetObject(blockTable["BLOCO_ESTACA_POSTE"], OpenMode.ForRead) as BlockTableRecord; foreach (ObjectId objId_loopVariable in blockTableRecord.GetBlockReferenceIds(true, true)) { AtributosDoBloco Atributo1 = new AtributosDoBloco(); BlockReference bloco; bloco = (BlockReference)acTrans.GetObject(objId_loopVariable, OpenMode.ForRead) as BlockReference;; BlockTableRecord nomeRealBloco = null; nomeRealBloco = acTrans.GetObject(bloco.DynamicBlockTableRecord, OpenMode.ForRead) as BlockTableRecord; AttributeCollection attCol = bloco.AttributeCollection; foreach (ObjectId attId in attCol) { AttributeReference attRef = (AttributeReference)acTrans.GetObject(attId, OpenMode.ForRead); string texto = (attRef.TextString); string tag = attRef.Tag; Atributo1.NomeEfetivoDoBloco = texto; } Atributo1.X = bloco.Position.X; Atributo1.Y = bloco.Position.Y; Atributo1.NomeBloco = nomeRealBloco.Name; Atributo1.Handle = bloco.Handle.ToString(); Atributo1.Angulo = bloco.Rotation; _lista.Add(Atributo1); } } catch (Exception e) { FinalizaTarefasAposExcecao("Ocorreu um erro ao ler os blocos do AutoCAD.", e); } acTrans.Commit(); } }
public static void LerTodosOsBlocosEBuscarOsAtributos() { Document documentoAtivo = Application.DocumentManager.MdiActiveDocument; Database database = documentoAtivo.Database; Editor editor = documentoAtivo.Editor; ObjectId idBTR = ObjectId.Null; using (Transaction acTrans = database.TransactionManager.StartTransaction()) { using (BlockTable acBlockTable = database.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable) { BlockTable blockTable; blockTable = acTrans.GetObject(database.BlockTableId, OpenMode.ForRead) as BlockTable; try { _lista = new List <AtributosDoBloco>(); foreach (string nome in ConstantesTubulacao.TubulacaoNomeDosBlocos) { BlockTableRecord blockTableRecord; blockTableRecord = acTrans.GetObject(blockTable[nome], OpenMode.ForRead) as BlockTableRecord; BlockReference blocoRefDinamico; blocoRefDinamico = (BlockReference)acTrans.GetObject(blockTable[nome], OpenMode.ForRead) as BlockReference; BlockTableRecord blockTableRecordDynamic = acTrans.GetObject(blocoRefDinamico.DynamicBlockTableRecord, OpenMode.ForRead) as BlockTableRecord; foreach (ObjectId objId_loopVariable in blockTableRecord.GetBlockReferenceIds(true, true)) { if (blockTableRecordDynamic != null && !blockTableRecordDynamic.ExtensionDictionary.IsNull) { DBDictionary extDic = acTrans.GetObject(blockTableRecordDynamic.ExtensionDictionary, OpenMode.ForRead) as DBDictionary; if (extDic != null) { EvalGraph graph = acTrans.GetObject(extDic.GetAt("ACAD_ENHANCeditorBLOCK"), OpenMode.ForRead) as EvalGraph; int[] nodeIds = graph.GetAllNodes(); foreach (uint nodeId in nodeIds) { DBObject node = graph.GetNode(nodeId, OpenMode.ForRead, acTrans); if (!(node is BlockPropertiesTable)) { continue; } BlockPropertiesTable blockPropertiesTable = node as BlockPropertiesTable; int currentRow = SelectRowNumber(ref blockPropertiesTable); BlockPropertiesTableRow row = blockPropertiesTable.Rows[currentRow]; List <string> nameProps = new List <string>(); for (int i = 0; i < blockPropertiesTable.Columns.Count; i++) { nameProps.Add(blockPropertiesTable.Columns[i].Parameter.Name); } DynamicBlockReferencePropertyCollection dynPropsCol = blocoRefDinamico.DynamicBlockReferencePropertyCollection; foreach (DynamicBlockReferenceProperty dynProp in dynPropsCol) { int i = nameProps.FindIndex(delegate(string s) { return(s == dynProp.PropertyName); }); if (i >= 0 && i < nameProps.Count) { try { dynProp.Value = row[i].AsArray()[0].Value; } catch { editor.WriteMessage("\nCan not set to {0} value={1}", dynProp.PropertyName, row[i].AsArray()[0].Value); } //----------------------------------------------------------------------------------------------- //foreach (ObjectId objId_loopVariable in blocoRefDinamico.GetBlockReferenceIds(true, true)) AtributosDoBloco Atributo1 = new AtributosDoBloco(); Atributo1.X = blocoRefDinamico.Position.X; Atributo1.Y = blocoRefDinamico.Position.Y; Atributo1.Handle = blocoRefDinamico.Handle.ToString(); Atributo1.Angulo = blocoRefDinamico.Rotation; _lista.Add(Atributo1); } } } } } } continue; } } catch (Exception e) { FinalizaTarefasAposExcecao("Ocorreu um erro ao ler os blocos do AutoCAD.", e); } acTrans.Commit(); } } }
public static void LerTodosOsBlocosEBuscarOsAtributos() { Document documentoAtivo = Application.DocumentManager.MdiActiveDocument; Database database = documentoAtivo.Database; Editor editor = documentoAtivo.Editor; using (Transaction acTrans = database.TransactionManager.StartTransaction()) { BlockTable blockTable; blockTable = acTrans.GetObject(database.BlockTableId, OpenMode.ForRead) as BlockTable; try { _lista = new List <AtributosDoBloco>(); _listaElevacao = new List <TextoElevacao>(); foreach (string nome in Constantes.PrefixoDoNomeDosBlocos) { try { BlockTableRecord blockTableRecord; blockTableRecord = acTrans.GetObject(blockTable[nome], OpenMode.ForRead) as BlockTableRecord; foreach (ObjectId objId_loopVariable in blockTableRecord.GetBlockReferenceIds(true, true)) { AtributosDoBloco Atributo1 = new AtributosDoBloco(); BlockReference bloco; bloco = (BlockReference)acTrans.GetObject(objId_loopVariable, OpenMode.ForRead) as BlockReference; BlockTableRecord nomeRealBloco = null; nomeRealBloco = acTrans.GetObject(bloco.DynamicBlockTableRecord, OpenMode.ForRead) as BlockTableRecord; AttributeCollection attCol = bloco.AttributeCollection; foreach (ObjectId attId in attCol) { AttributeReference attRef = (AttributeReference)acTrans.GetObject(attId, OpenMode.ForRead); string texto = (attRef.TextString); Atributo1.NomeEfetivoDoBloco = texto; } Atributo1.X = bloco.Position.X; Atributo1.Y = bloco.Position.Y; Atributo1.NomeBloco = nomeRealBloco.Name; Atributo1.Handle = bloco.Handle.ToString(); Atributo1.Angulo = bloco.Rotation; _lista.Add(Atributo1); TextoElevacao Elevacao1 = new TextoElevacao(); Point3dCollection pntCol = new Point3dCollection { new Point3d(Atributo1.X - 7.5, Atributo1.Y + 7.5, 0), new Point3d(Atributo1.X + 7.5, Atributo1.Y + 7.5, 0), new Point3d(Atributo1.X + 7.5, Atributo1.Y - 7.5, 0), new Point3d(Atributo1.X - 7.5, Atributo1.Y - 7.5, 0) }; PromptSelectionResult pmtSelRes = editor.SelectCrossingPolygon(pntCol); if (pmtSelRes.Status == PromptStatus.OK) { MText itemSelecionado = null; double distanciaMinima = Double.MaxValue; foreach (ObjectId id in pmtSelRes.Value.GetObjectIds()) { if (id.ObjectClass.DxfName == "MTEXT") { var text = acTrans.GetObject(id, OpenMode.ForWrite) as MText; if (text.Text.Contains("CA=")) { double distancia = Math.Sqrt(Math.Pow(text.Location.X - Atributo1.X, 2) + Math.Pow(text.Location.Y - Atributo1.Y, 2)); if (distancia < distanciaMinima) { distanciaMinima = distancia; itemSelecionado = text; } } } } if (itemSelecionado != null) { var lista = itemSelecionado.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); string textoCA = lista.Where(p => p.Contains("CA=")).Any() ? lista.Where(p => p.Contains("CA=")).FirstOrDefault() : string.Empty; string textoCFC = lista.Where(p => p.Contains("CFC=")).Any() ? lista.Where(p => p.Contains("CFC=")).FirstOrDefault() : string.Empty; textoCA = textoCA.Replace("CA=", ""); textoCFC = textoCFC.Replace("CFC=", ""); Elevacao1.ElevacaoInicial = textoCA; Elevacao1.ElevacaoFinal = textoCFC; Elevacao1.PosicaoX = itemSelecionado.Location.X; Elevacao1.PosicaoY = itemSelecionado.Location.Y; _listaElevacao.Add(Elevacao1); } else { editor.WriteMessage("\nAs Elevações não foram encontradas!"); } } } } catch (Exception) { continue; } continue; } } catch (Exception e) { FinalizaTarefasAposExcecao("Ocorreu um erro ao ler os blocos do AutoCAD.", e); } acTrans.Commit(); } }
public static void LerTodosOsBlocosEBuscarOsAtributos() { Document documentoAtivo = Application.DocumentManager.MdiActiveDocument; Database database = documentoAtivo.Database; Editor editor = documentoAtivo.Editor; PromptSelectionResult pmtSelRes = editor.GetSelection(); using (Transaction acTrans = documentoAtivo.TransactionManager.StartTransaction()) { BlockTable blockTable; blockTable = acTrans.GetObject(database.BlockTableId, OpenMode.ForRead) as BlockTable; if (pmtSelRes.Status == PromptStatus.OK) { _lista = new List <AtributosDoBloco>(); _listaElevacao = new List <TextoElevacao>(); foreach (ObjectId id in pmtSelRes.Value.GetObjectIds()) { try { AtributosDoBloco Atributo1 = new AtributosDoBloco(); foreach (string nome in ConstantesTubulacao.TubulacaoNomeDosBlocos) { BlockTableRecord blockTableRecord; blockTableRecord = acTrans.GetObject(blockTable[nome], OpenMode.ForRead) as BlockTableRecord; if (!blockTableRecord.IsDynamicBlock) { return; } try { BlockReference bloco = null; bloco = acTrans.GetObject(id, OpenMode.ForRead) as BlockReference; BlockTableRecord nomeRealBloco = null; nomeRealBloco = acTrans.GetObject(bloco.DynamicBlockTableRecord, OpenMode.ForRead) as BlockTableRecord; DynamicBlockReferencePropertyCollection properties = bloco.DynamicBlockReferencePropertyCollection; if (blockTableRecord.IsDynamicBlock && blockTableRecord.Name == nome) { for (int i = 0; i < properties.Count; i++) { DynamicBlockReferenceProperty property = properties[i]; if (property.PropertyName == "Distance1") { Atributo1.Distancia = property.Value.ToString(); } Atributo1.X = bloco.Position.X; Atributo1.Y = bloco.Position.Y; Atributo1.NomeBloco = nomeRealBloco.Name; Atributo1.Handle = bloco.Handle.ToString(); Atributo1.Angulo = bloco.Rotation; var lista = Atributo1.NomeBloco.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); if (lista.Where(c => c.Contains("TUBO FF DN ")).Any()) { string diametro = lista.Where(p => p.Contains("TUBO FF DN ")).Any() ? lista.Where(p => p.Contains("TUBO FF DN ")).FirstOrDefault() : string.Empty; diametro = diametro.Replace("TUBO FF DN ", ""); Atributo1.Diametro = diametro; } else if (lista.Where(c => c.Contains("TUBO CONC ARMADO DN")).Any()) { string diametro = lista.Where(p => p.Contains("TUBO CONC ARMADO DN")).Any() ? lista.Where(p => p.Contains("TUBO CONC ARMADO DN")).FirstOrDefault() : string.Empty; diametro = diametro.Replace("TUBO CONC ARMADO DN", ""); Atributo1.Diametro = diametro; } else if (lista.Where(c => c.Contains("TUBO PVC DN")).Any()) { string diametro = lista.Where(p => p.Contains("TUBO PVC DN ")).Any() ? lista.Where(p => p.Contains("TUBO PVC DN ")).FirstOrDefault() : string.Empty; diametro = diametro.Replace("TUBO PVC DN ", ""); Atributo1.Diametro = diametro; } double distancia = Convert.ToDouble(Atributo1.Distancia); double dimensaoFinalX; double dimensaoFinalY; if (bloco.Rotation < 1.5708) { dimensaoFinalX = distancia * Math.Cos(bloco.Rotation); dimensaoFinalY = distancia * Math.Sin(bloco.Rotation); Atributo1.XTubo = bloco.Position.X + dimensaoFinalX; Atributo1.YTubo = bloco.Position.Y + dimensaoFinalY; } else if (bloco.Rotation > 1.5708 && bloco.Rotation <= 3.14159265) { dimensaoFinalX = distancia * Math.Sin(3.14159265 - bloco.Rotation); dimensaoFinalY = distancia * Math.Cos(3.14159265 - bloco.Rotation); Atributo1.XTubo = bloco.Position.X - dimensaoFinalX; Atributo1.YTubo = bloco.Position.Y + dimensaoFinalY; } else if (bloco.Rotation > 3.14159265 && bloco.Rotation <= 4.71239) { dimensaoFinalX = distancia * Math.Sin(4.71239 - bloco.Rotation); dimensaoFinalY = distancia * Math.Cos(4.71239 - bloco.Rotation); Atributo1.XTubo = bloco.Position.X - dimensaoFinalX; Atributo1.YTubo = bloco.Position.Y - dimensaoFinalY; } else if (bloco.Rotation > 4.71239 && bloco.Rotation <= 6.28319) { dimensaoFinalX = distancia * Math.Sin(6.28319 - bloco.Rotation); dimensaoFinalY = distancia * Math.Cos(6.28319 - bloco.Rotation); Atributo1.XTubo = bloco.Position.X + dimensaoFinalX; Atributo1.YTubo = bloco.Position.Y - dimensaoFinalY; } TextoElevacao Elevacao1 = new TextoElevacao(); //---------------------------------------------------------------------------- Point3dCollection pntCol = new Point3dCollection { new Point3d(Atributo1.X - 5, Atributo1.Y + 5, 0), new Point3d(Atributo1.X + 5, Atributo1.Y + 5, 0), new Point3d(Atributo1.X + 5, Atributo1.Y - 5, 0), new Point3d(Atributo1.X - 5, Atributo1.Y - 5, 0) }; PromptSelectionResult pmtSelResPoint = editor.SelectCrossingPolygon(pntCol); if (pmtSelResPoint.Status == PromptStatus.OK) { MText itemSelecionado = null; double distanciaMinima = Double.MaxValue; foreach (ObjectId objId in pmtSelResPoint.Value.GetObjectIds()) { if (objId.ObjectClass.DxfName == "MTEXT") { var text = acTrans.GetObject(objId, OpenMode.ForWrite) as MText; if (text.Text.Contains("CF=")) { double distanciaTexto = Math.Sqrt(Math.Pow(text.Location.X - Atributo1.X, 2) + Math.Pow(text.Location.Y - Atributo1.Y, 2)); if (distanciaTexto < distanciaMinima) { distanciaMinima = distanciaTexto; itemSelecionado = text; } } } } if (itemSelecionado != null) { var listaTexto = itemSelecionado.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); string textoCA = listaTexto.Where(d => d.Contains("CF=")).Any() ? listaTexto.Where(p => p.Contains("CF=")).FirstOrDefault() : string.Empty; textoCA = textoCA.Replace("CF=", ""); Elevacao1.ElevacaoInicial = textoCA; Elevacao1.PosicaoX = itemSelecionado.Location.X; Elevacao1.PosicaoY = itemSelecionado.Location.Y; } else { editor.WriteMessage("\nAs Elevações não foram encontradas!"); } } //---------------------------------------------------------------------------------------------- Point3dCollection pntColElevacao = new Point3dCollection { new Point3d(Atributo1.XTubo - 5, Atributo1.YTubo + 5, 0), new Point3d(Atributo1.XTubo + 5, Atributo1.YTubo + 5, 0), new Point3d(Atributo1.XTubo + 5, Atributo1.YTubo - 5, 0), new Point3d(Atributo1.XTubo - 5, Atributo1.YTubo - 5, 0) }; PromptSelectionResult pmtSelResPoint2 = editor.SelectCrossingPolygon(pntColElevacao); if (pmtSelResPoint2.Status == PromptStatus.OK) { MText itemSelecionado2 = null; double distanciaMinima2 = Double.MaxValue; foreach (ObjectId objId2 in pmtSelResPoint2.Value.GetObjectIds()) { if (objId2.ObjectClass.DxfName == "MTEXT") { var text2 = acTrans.GetObject(objId2, OpenMode.ForWrite) as MText; if (text2.Text.Contains("CF=")) { double distanciaTexto2 = Math.Sqrt(Math.Pow(text2.Location.X - Atributo1.XTubo, 2) + Math.Pow(text2.Location.Y - Atributo1.YTubo, 2)); if (distanciaTexto2 < distanciaMinima2) { distanciaMinima2 = distanciaTexto2; itemSelecionado2 = text2; } } } } if (itemSelecionado2 != null) { var listaTexto2 = itemSelecionado2.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); string textoCA2 = listaTexto2.Where(d => d.Contains("CF=")).Any() ? listaTexto2.Where(p => p.Contains("CF=")).FirstOrDefault() : string.Empty; textoCA2 = textoCA2.Replace("CF=", ""); Elevacao1.ElevacaoFinal = textoCA2; Elevacao1.PosicaoX = itemSelecionado2.Location.X; Elevacao1.PosicaoY = itemSelecionado2.Location.Y; } else { editor.WriteMessage("\nAs Elevações não foram encontradas!"); } _listaElevacao.Add(Elevacao1); } _lista.Add(Atributo1); break; } } } catch (Exception) { continue; } } } catch (Exception) { continue; } } } acTrans.Commit(); } }
public static void LerTodosOsBlocosEBuscarOsAtributos() { Document documentoAtivo = Application.DocumentManager.MdiActiveDocument; Database database = documentoAtivo.Database; Editor editor = documentoAtivo.Editor; using (Transaction acTrans = documentoAtivo.TransactionManager.StartTransaction()) { BlockTable blockTable; blockTable = acTrans.GetObject(database.BlockTableId, OpenMode.ForRead) as BlockTable; //TypedValue[] acTypValAr = new TypedValue[0]; // acTypValAr.SetValue(new TypedValue((int)DxfCode.Start, "BLOCK"),0); //SelectionFilter acSelFtr = new SelectionFilter(acTypValAr); PromptSelectionResult pmtSelRes = editor.GetSelection(); if (pmtSelRes.Status == PromptStatus.OK) { _lista = new List <AtributosDoBloco>(); foreach (ObjectId id in pmtSelRes.Value.GetObjectIds()) { try { AtributosDoBloco Atributo1 = new AtributosDoBloco(); foreach (string nome in ConstantesTubulacao.TubulacaoNomeDosBlocos) { BlockTableRecord blockTableRecord; blockTableRecord = acTrans.GetObject(blockTable[nome], OpenMode.ForRead) as BlockTableRecord; if (!blockTableRecord.IsDynamicBlock) { return; } try { if (blockTableRecord.IsDynamicBlock && blockTableRecord.Name.Equals(nome)) { BlockReference bloco = acTrans.GetObject(id, OpenMode.ForRead) as BlockReference; DynamicBlockReferencePropertyCollection properties = bloco.DynamicBlockReferencePropertyCollection; BlockTableRecord nomeRealBloco = null; nomeRealBloco = acTrans.GetObject(bloco.DynamicBlockTableRecord, OpenMode.ForRead) as BlockTableRecord; if (!_lista.Any(b => b.Handle.ToString() == Atributo1.Handle)) { for (int i = 0; i < properties.Count; i++) { DynamicBlockReferenceProperty property = properties[i]; if (property.PropertyName == "Distance1") { Atributo1.Distancia = property.Value.ToString(); _lista.Add(Atributo1); } Atributo1.X = bloco.Position.X; Atributo1.Y = bloco.Position.Y; Atributo1.NomeBloco = nomeRealBloco.Name; Atributo1.Handle = bloco.Handle.ToString(); Atributo1.Angulo = bloco.Rotation; _lista.Add(Atributo1); var lista = Atributo1.NomeBloco.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); string diametro = lista.Where(p => p.Contains("TUBO FF DN ")).Any() ? lista.Where(p => p.Contains("TUBO FF DN ")).FirstOrDefault() : string.Empty; diametro = diametro.Replace("TUBO FF DN ", ""); Atributo1.Diametro = diametro; double distancia = Convert.ToDouble(Atributo1.Distancia); double dimensaoFinalX; double dimensaoFinalY; if (bloco.Rotation < 1.5708) { dimensaoFinalX = distancia * Math.Cos(bloco.Rotation); dimensaoFinalY = distancia * Math.Sin(bloco.Rotation); Atributo1.XTubo = bloco.Position.X + dimensaoFinalX; Atributo1.YTubo = bloco.Position.Y + dimensaoFinalY; _lista.Add(Atributo1); } else if (bloco.Rotation > 1.5708 && bloco.Rotation <= 3.14159265) { dimensaoFinalX = distancia * Math.Sin(3.14159265 - bloco.Rotation); dimensaoFinalY = distancia * Math.Cos(3.14159265 - bloco.Rotation); Atributo1.XTubo = bloco.Position.X - dimensaoFinalX; Atributo1.YTubo = bloco.Position.Y + dimensaoFinalY; _lista.Add(Atributo1); } else if (bloco.Rotation > 3.14159265 && bloco.Rotation <= 4.71239) { dimensaoFinalX = distancia * Math.Sin(4.71239 - bloco.Rotation); dimensaoFinalY = distancia * Math.Cos(4.71239 - bloco.Rotation); Atributo1.XTubo = bloco.Position.X - dimensaoFinalX; Atributo1.YTubo = bloco.Position.Y - dimensaoFinalY; _lista.Add(Atributo1); } else if (bloco.Rotation > 4.71239 && bloco.Rotation <= 6.28319) { dimensaoFinalX = distancia * Math.Sin(6.28319 - bloco.Rotation); dimensaoFinalY = distancia * Math.Cos(6.28319 - bloco.Rotation); Atributo1.XTubo = bloco.Position.X + dimensaoFinalX; Atributo1.YTubo = bloco.Position.Y - dimensaoFinalY; _lista.Add(Atributo1); } } } } } catch (Exception) { continue; } } } catch (Exception) { continue; } } } acTrans.Commit(); } }