Você está aqui: AutoCAD .NET API C# ::: Dicas & Truques ::: Linha, Linhas, Comando LINE |
Como pedir para o usuário informar os pontos iniciais e finais de uma linha do AutoCAD usando AutoCad .NET APIQuantidade de visualizações: 353 vezes |
|
Nesta dica mostrarei como podemos tirar proveito da API .NET do AutoCAD para desenhar uma linha na área de desenho. Para isso nós vamos pedir para o usuário selecionar dois pontos (que podem ser digitados na janela de comando ou clicados). Para a leitura dos pontos nós vamos usar a função Editor.GetPoint() da classe Document. Note que a classe Document é obtida a partir de uma chamada a Application.DocumentManager.MdiActiveDocument, enquanto a base de dados do AutoCAD é obtida via doc.Database. Após a leitura dos dois pontos nós criamos uma nova linha usando o construtor da classe Line, fornecendo os pontos inicial e final. Observe o uso das funções AppendEntity() para adicionar a nova linha na tabela de blocos e a função AddNewlyCreatedDBObject() da classe Transaction para, de fato, exibir a linha na área de desenho do AutoCAD. Veja o código AutoCAD 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.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
[assembly: CommandClass(typeof(PluginEstudos.Class1))]
namespace PluginEstudos {
public class Class1 {
[CommandMethod("lerponto")]
public void HelloCommand() {
// vamos obter o documento atual
Document doc = Application.DocumentManager.MdiActiveDocument;
// vamos obter a base de dados
Database db = doc.Database;
// para guardar o resultado da seleção do ponto
PromptPointResult res_ponto;
PromptPointOptions opcoes_res_ponto = new PromptPointOptions("");
// pedimos para o usuário informar o ponto inicial
opcoes_res_ponto.Message = "\nInforme o ponto inicial da linha: ";
res_ponto = doc.Editor.GetPoint(opcoes_res_ponto);
Point3d ponto_inicial = res_ponto.Value;
// se o usuário pressionar ESC ou cancelar o comando
if (res_ponto.Status == PromptStatus.Cancel) {
return;
}
// vamos pedir o segundo ponto
opcoes_res_ponto.Message = "\nInforme o ponto final da linha: ";
opcoes_res_ponto.UseBasePoint = true;
opcoes_res_ponto.BasePoint = ponto_inicial;
res_ponto = doc.Editor.GetPoint(opcoes_res_ponto);
Point3d ponto_final = res_ponto.Value;
// se o usuário pressionar ESC ou cancelar o comando
if (res_ponto.Status == PromptStatus.Cancel) {
return;
}
// iniciamos uma nova transação
using (Transaction trans = db.TransactionManager.StartTransaction()) {
BlockTable tabela_blocos;
BlockTableRecord reg_tabela_blocos;
// abre o model space para escrita
tabela_blocos = trans.GetObject(db.BlockTableId,
OpenMode.ForRead) as BlockTable;
reg_tabela_blocos = trans.GetObject(tabela_blocos[BlockTableRecord.ModelSpace],
OpenMode.ForWrite) as BlockTableRecord;
// criamos a nova linha
using (Line linha = new Line(ponto_inicial, ponto_final)) {
// adicionamos a linha no desenho
reg_tabela_blocos.AppendEntity(linha);
trans.AddNewlyCreatedDBObject(linha, true);
}
// aplicamos o zoom para mostrar todos os elementos do desenho
doc.SendStringToExecute("._zoom _all ", true, false, false);
// fechamos a transação
trans.Commit();
}
}
}
}
Ao executar este código AutoCAD C# o programa vai pedir para informarmos dois pontos (que podem ser digitados ou escolhidos na área de desenho do AutoCAD) e desenhará uma linha entre eles. |
|
|
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 |




