Você está aqui: AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Parcels (Parcelas, Lotes, Loteamento) |
Como retornar a quantidade de lotes em um loteamento do Civil 3D usando a função GetParcelIds().Count da classe Site da AutoCAD Civil 3D .NET APIQuantidade de visualizações: 650 vezes |
|
Nesta dica mostrarei como podemos obter a quantidade de lotes em um loteamento do Civil 3D, ou seja, a quantidade de parcels contidas em um site. O primeiro passo é analisar a função GetSiteByName() que criei no código. Ela nos possibilita fornecer o nome de um site e retornar uma referência a um objeto da classe Site. Para este exemplo eu usei um loteamento com o nome "LOTEAMENTO SETOR SUL". Depois de obter o objeto Site, tudo que temos a fazer é efetuar uma chamada à função GetParcelIds() e, em seguida, sua propriedade Count, que nos retornará a quantidade de lotes no loteamento. 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 quantidade
// de lotes encontrados
int quant_lotes = site.GetParcelIds().Count;
editor.WriteMessage("\nO loteamento possui: " +
quant_lotes + " lotes.");
}
}
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: O loteamento possui: 8 lotes. |
|
|
Veja mais Dicas e truques de AutoCAD Civil 3D .NET C# |
Dicas e truques de outras linguagens |
|
C - Como verificar a existência de uma substring em uma string usando a função strstr() da linguagem C |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







