Você está aqui: AutoCAD .NET API C# ::: Dicas & Truques ::: Polyline - Polilinha |
Como selecionar uma polilinha no AutoCAD e mostrar as coordenadas de suas vértices usando a AutoCAD .NET C# APIQuantidade de visualizações: 561 vezes |
|
Em várias situações nós precisamos efetuar cálculos usando os vértices de uma polilinha. Nesta dica eu mostro como podemos pedir para o usuário selecionar uma polilinha na área de desenho do AutoCAD e mostrar as coordenadas x e y de cada um dos vértices. No código abaixo eu trato duas formas de polilinhas no AutoCAD: a polilinha 2D Polyline e a polilinha 3D, representada pelo objeto Polyline3d. Note que as formas de se extrair os vértices desses dois objetos são completamente diferentes. Se a polilinha for 2D, seus vértices são extraído usando-se a função GetPoint2dAt(), que retorna um objeto Point2d. Se a polilinha for 3D, ela será representada por um objeto da classe Polyline3d, e seus vértices são retornados como objetos PolylineVertex3d a partir de uma chamada à função GetObject() da classe Transaction. Veja o código AutoCAD .NET C# API 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("estudos")]
public void Estudos() {
// vamos obter o documento atual
Document doc = Application.DocumentManager.MdiActiveDocument;
// vamos obter a base de dados
Database db = doc.Database;
// vamos pedir para o usuário selecionar uma polilinha
PromptEntityResult resultado = doc.Editor.GetEntity(
"Selecione uma polilinha: ");
// a seleção foi feita com sucesso
if (resultado.Status != PromptStatus.OK) {
Application.ShowAlertDialog("Nenhum elemento selecionado.");
return;
}
// iniciamos uma transação
using (Transaction trans = db.TransactionManager.StartTransaction()) {
// obtemos a polilinha selecionada
DBObject objeto = trans.GetObject(resultado.ObjectId, OpenMode.ForRead);
// vamos testar se a polilinha é do tipo leve ou otimizada
Polyline polilinha2d = objeto as Polyline;
if (polilinha2d != null) {
// vamos percorrer todos os vértices, um de cada vez
int numero_vertices = polilinha2d.NumberOfVertices;
for (int i = 0; i < numero_vertices; i++) {
// vamos obter um objeto Point2d ou Point3d
Point2d ponto = polilinha2d.GetPoint2dAt(i);
// e escrevemos na janela de comandos
doc.Editor.WriteMessage("\nX = " + ponto.X.ToString("0.00") +
"; Y = " + ponto.Y.ToString("0.00"));
}
}
// é uma polilinha do tipo pesada, ou heavy
else {
Polyline3d polilinha3d = objeto as Polyline3d;
if (polilinha3d != null) {
// percorremos cada um dos vértices
foreach (ObjectId id_vertice in polilinha3d) {
PolylineVertex3d vertice3d = (PolylineVertex3d)trans.GetObject(
id_vertice, OpenMode.ForRead);
// e escrevemos na janela de comandos
doc.Editor.WriteMessage("\nX = " + vertice3d.Position.X.ToString("0.00") +
"; Y = " + vertice3d.Position.Y.ToString("0.00"));
}
}
}
// fechamos a transação
trans.Commit();
}
}
}
}
Ao executar este código AutoCAD .NET C# API nós teremos o seguinte resultado: Command: Selecione uma polilinha: X = 168.91; Y = 159.91 X = 415.17; Y = 126.24 X = 317.08; Y = 24.18 X = 80.53; Y = 104.29 |
|
|
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 |







