Você está aqui: AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Superfície - Surface |
Como retornar a quantidade de pontos em uma superfície do AutoCAD Civil 3D usando C# e a propriedade NumberOfPoints do objeto GeneralSurfacePropertiesQuantidade de visualizações: 656 vezes |
Em algumas situações nós precisamos saber a quantidade de pontos existentes em uma superfície do AutoCAD Civil 3D. Uma das formas de se obter isso é expandir o nó Surfaces, clicar com o botão direito na superfície desejada e pedir Surface Properties. Agora basta ir na aba Statistics e expandir a seção General. Via programação podemos obter o número de pontos de uma surface usando a propriedade NumberOfPoints do objeto GeneralSurfaceProperties. Este objeto é obtido a partir de uma chamada à função GetGeneralProperties() do objeto CivSurface que estamos operando no momento. Veja o código AutoCAD Civil 3D C# .NET completo para o exemplo: using System; using Autodesk.AutoCAD.Runtime; using Autodesk.Civil.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; using CivSurface = Autodesk.Civil.DatabaseServices.Surface; using Autodesk.Civil.DatabaseServices; namespace Estudos { public class Class1 : IExtensionApplication { [CommandMethod("Superficie")] public void Superficie() { // vamos obter uma referência ao documento atual do Civil 3D CivilDocument doc = CivilApplication.ActiveDocument; // obtemos o editor Editor editor = Application.DocumentManager.MdiActiveDocument.Editor; // vamos pesquisar a superfície chamada "TN - SUPERFÍCIE NATURAL" string nome = "TN - SUPERFÍCIE NATURAL"; // vamos iniciar um nova transação using (Transaction ts = Application.DocumentManager.MdiActiveDocument. Database.TransactionManager.StartTransaction()) { try { // efetuamos uma chamada ao método GetSurfaceByName() passando // o documento atual do AutoCAD Civil 3D e o nome da superfície // que queremos encontrar CivSurface superficie = GetSurfaceByName(doc, nome); // e mostramos o resultado if (superficie == null) { editor.WriteMessage("\nA superfície não foi encontrada."); } else { // agora que já temos a superfície, vamos obter suas propriedades // por meio do objeto GeneralSurfaceProperties GeneralSurfaceProperties prop = superficie.GetGeneralProperties(); // e obtemos a quantidade de pontos dessa superfície int quant_pontos = prop.NumberOfPoints; // e mostramos o resultado editor.WriteMessage("\nA superfície possui " + quant_pontos + " pontos."); } } catch (System.Exception e) { // handle bad file path editor.WriteMessage("Erro: {0}", e.Message); } } } // função C# que retorna uma superfície por nome, ou null em // caso de não encontrar a surface desejada public CivSurface GetSurfaceByName(CivilDocument doc, string nome) { // vamos declarar um objeto da classe CivSurface superficie = null; // agora vamos obter os ids de todas as superfícies ObjectIdCollection superficies = doc.GetSurfaceIds(); // vamos percorrer todos os ids de superfícies retornados foreach (ObjectId idSuperficie in superficies) { superficie = idSuperficie.GetObject(OpenMode.ForRead) as CivSurface; // encontramos a superfície if (superficie.Name.Equals(nome)) { return superficie; } } // retorna null se a superfície não for encontrada return null; } public void Initialize() { // pode deixar em branco } public void Terminate() { // pode deixar em branco } } } Ao executar este código AutoCAD Civil 3D .NET C# nós teremos o seguinte resultado: A superfície possui 18427 pontos. |
![]() |
Veja mais Dicas e truques de AutoCAD Civil 3D .NET C# |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |