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: 368 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
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 |







