Você está aqui: AutoCAD .NET API C# ::: Dicas & Truques ::: Linha, Linhas, Comando LINE |
Como calcular o comprimento total das linhas em um documento do AutoCAD usando a AutoCAD C# .NET e a propriedade Length da classe LineQuantidade de visualizações: 246 vezes |
Nesta dica mostrarei como podemos usar a propriedade Length da classe Line da AutoCAD C# .NET API para percorrer todas as linhas de um documento do AutoCAD e retornar o comprimento total das linhas encontradas. Veja o código AutoCAD C# .NET API completo para o exemplo: using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using System.Collections.Generic; using System; using System.Linq; [assembly: CommandClass(typeof(PluginEstudos.Class1))] namespace PluginEstudos { public class Class1 { [CommandMethod("estudos")] public void Estudos() { // vamos obter o documento atual Document doc = Application.DocumentManager.MdiActiveDocument; // vamos obter a base de dados Database db = doc.Database; // vamos criar um tipo função para validar os objetos que // queremos listar Func<Type, RXClass> getClass = RXObject.GetClass; // um set dos tipos aceitáveis var tipos_aceitaveis = new HashSet<RXClass>{ getClass(typeof(Line)) }; // iniciamos uma transação using (Transaction trans = db.TransactionManager.StartTransaction()) { // vamos abrir a tabela de blocos para leitura BlockTable tabela_blocos = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; // agora abrimos o registro da tabela de blocos do model space // para escrita BlockTableRecord reg_tabela_blocos = trans.GetObject( tabela_blocos[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; // vamos obter os ids de todas as linhas no documento List<ObjectId> ids_linhas = (from id in reg_tabela_blocos.Cast<ObjectId>() where tipos_aceitaveis.Contains(id.ObjectClass) select id).ToList(); // agora vamos percorrer todas as linhas encontradas e calcular // o comprimento total das linhas double comprimento_total = 0; foreach (ObjectId id_linha in ids_linhas) { Line linha = trans.GetObject(id_linha, OpenMode.ForRead) as Line; // adicionamos o comprimento da linha atual ao // comprimento total que já temos comprimento_total = comprimento_total + linha.Length; } // e mostramos o resultado doc.Editor.WriteMessage("\nO comprimento total das linhas é: " + comprimento_total + "\n"); // fechamos a transação trans.Commit(); } } } } Ao executar este código AutoCAD C# .NET nós teremos o seguinte resultado: O comprimento total das linhas é: 4731.10799362907 |
![]() |
Veja mais Dicas e truques de AutoCAD .NET API C# |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |