Você está aqui: AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Parcels (Parcelas, Lotes, Loteamento) |
Como listar todos os lotes de um loteamento do Civil 3D com seus números, ids e áreas usando a classe Parcel da AutoCAD Civil 3D .NET APIQuantidade de visualizações: 707 vezes |
|
Nesta dica mostrarei como podemos usar a API .NET do AutoCAD Civil 3D para acessar um determinado loteamento (site) e listar todos os lotes (parcels) que pertencem a ele. Note que, no código, mostro como listar os números, ids e áreas de todos os parcels pertencentes ao site escolhido. Para este exemplo eu usei um site chamado "LOTEAMENTO SETOR SUL". Fique atento à função personalizada GetSiteByName() que recebe uma string e retorna o objeto Site correspondente. Veja o código AutoCAD Civil 3D .NET C# 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.Civil.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.Civil.DatabaseServices;
namespace Estudos {
public class Class1 : IExtensionApplication {
[CommandMethod("Parcels")]
public void Parcels() {
// vamos obter uma referência ao documento atual do Civil 3D
CivilDocument doc = CivilApplication.ActiveDocument;
Editor editor = Application.DocumentManager.MdiActiveDocument.Editor;
// vamos pesquisar um loteamento chamado "LOTEAMENTO SETOR SUL"
string nome = "LOTEAMENTO SETOR SUL";
// vamos iniciar um nova transação
using (Transaction ts = Application.DocumentManager.MdiActiveDocument.
Database.TransactionManager.StartTransaction()) {
try {
// efetuamos uma chamada ao método GetSiteByName() passando
// o documento atual do AutoCAD Civil 3D e o nome do site
// que queremos encontrar
Site site = GetSiteByName(doc, nome);
// e mostramos o resultado
if (site == null) {
editor.WriteMessage("\nO loteamento não foi encontrado.");
}
else {
// encontramos o loteamento. Agora vamos retornar a lista
// de lotes encontrados
ObjectIdCollection lotes = site.GetParcelIds();
// vamos percorrer os lotes e mostrar os seus números, ids e áreas
foreach (ObjectId id_lote in lotes) {
Parcel lote = id_lote.GetObject(OpenMode.ForRead) as Parcel;
// vamos mostrar o número, id e área desse lote
editor.WriteMessage("\nNúmero: " + lote.Number + "; Id: " +
lote.Id + "; Área: " + lote.Area);
}
}
}
catch (System.Exception e) {
// handle bad file path
editor.WriteMessage("Erro: {0}", e.Message);
}
}
}
// função C# que retorna site por nome, ou null em
// caso de não encontrar o site desejado
public Site GetSiteByName(CivilDocument doc, string nome) {
// vamos declarar um objeto da classe Site
Site site = null;
// agora vamos obter os ids de todos os sites
ObjectIdCollection sites = doc.GetSiteIds();
// vamos percorrer todos os ids de sites retornados
foreach (ObjectId id_site in sites) {
site = id_site.GetObject(OpenMode.ForRead) as Site;
// encontramos o site
if (site.Name.Equals(nome)) {
return site;
}
}
// retorna null se o site não for encontrado
return null;
}
public void Initialize() {
// pode deixar em branco
}
public void Terminate() {
// pode deixar em branco
}
}
}
Ao executar este código AutoCAD Civil 3D C# .NET nós teremos o seguinte resultado: Número: 1; Id: (2369904896544); Área: 0.0775914442906534 Número: 2; Id: (2369904896560); Área: 0.0743898781029584 Número: 4; Id: (2369904896592); Área: 0.0804389565922851 Número: 5; Id: (2369904896608); Área: 0.0744155815287316 Número: 6; Id: (2369904896624); Área: 0.0770023124340303 Número: 7; Id: (2369904896640); Área: 0.0866711629516161 Número: 3; Id: (2369904896576); Área: 0.0947258711424344 Número: 8; Id: (2369904896656); Área: 0.096533569907287 |
|
|
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 |






