Você está aqui: AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Alinhamento - Alignment |
Como listar os nomes, ids e tipos de perfis de um alinhamento no Civil 3D usando GetProfileIds() e GetObject() da API .NET do Civil 3DQuantidade de visualizações: 557 vezes |
|
Em algumas situações nós precisamos realizar algumas ações nos perfis de um determinado alinhamento do Civil 3D. Para isso nós podemos usar as funções GetProfileIds() e GetObject() da API C# do Civil 3D. Veja como isso é feito. De posse do alinhamento desejado, efetuamos uma chamada à sua função GetProfileIds() e retornados um ObjectIdCollection contendo os ids de todos os perfis do alinhamento em questão. Em seguida usamos um laço foreach para percorrer cada um desses ids, fazemos chamadas à GetObject() e retornando objetos da classe Profile. O passo final é acessar as propriedades Id, Name e ProfileType do objeto Profile e mostrar o resultado na janela de comando. 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 System;
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("Alinhamento")]
public void Alinhamento() {
// 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 o alinhamento chamado "EIXO DA RODOVIA"
string nome = "EIXO DA RODOVIA";
// vamos iniciar um nova transação
using (Transaction ts = Application.DocumentManager.MdiActiveDocument.
Database.TransactionManager.StartTransaction()) {
try {
// efetuamos uma chamada ao método GetAlignmentByName() passando
// o documento atual do AutoCAD Civil 3D e o nome do alinhamento
// que queremos encontrar
Alignment alinhamento = GetAlignmentByName(doc, nome);
// ops, o alinhamento não foi encontrado
if (alinhamento == null) {
editor.WriteMessage("\nO alinhamento não foi encontrado.");
}
else {
// encontramos o alinhamento. Vamos mostrar os ids e nomes dos
// perfis que ele possui
ObjectIdCollection ids_perfis = alinhamento.GetProfileIds();
// vamos percorrer todos os ids de profiles retornados
foreach (ObjectId id_perfil in ids_perfis) {
Profile perfil = id_perfil.GetObject(OpenMode.ForRead) as Profile;
// mostramos o id e nome do perfil
editor.WriteMessage("\nId: " + perfil.Id + "; Nome: " +
perfil.Name + "; Tipo: " + perfil.ProfileType.ToString() + "\n");
}
}
}
catch (System.Exception e) {
// vamos tratar o erro
editor.WriteMessage("Erro: {0}", e.Message);
}
}
}
// função C# que retorna um alinhamento por nome, ou null em
// caso de não encontrar o alinhamento desejado
public Alignment GetAlignmentByName(CivilDocument doc, string nome) {
// vamos declarar um objeto da classe Alignment
Alignment alinhamento = null;
// agora vamos obter os ids de todos os alinhamentos
ObjectIdCollection alinhamentos = doc.GetAlignmentIds();
// vamos percorrer todos os ids de alinhamentos retornados
foreach (ObjectId idAlinhamento in alinhamentos) {
alinhamento = idAlinhamento.GetObject(OpenMode.ForRead) as Alignment;
// encontramos o alinhamento
if (alinhamento.Name.Equals(nome)) {
return alinhamento;
}
}
// retorna null se o alinhamento 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 .NET C# nós teremos o seguinte resultado: Id: (2246912726512); Nome: TN - SUPERFÍCIE NATURAL; Tipo: EG Id: (2246912726832); Nome: GREIDE RODOVIA - PERFIL VERTICAL DA RODOVIA; Tipo: FG Veja que mostrei o id, o nome e o tipo de cada um dos dois perfis pertencentes ao alinhamento "EIXO DA RODOVIA". Note que, de acordo com as configurações do Brazil Kit, "EG" significa TERRENO NATURAL enquanto "FG" significa "PROJETO", ou seja, o greide da rua, rodovia, ferrovia, etc. |
|
|
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 |





