Untitled
unknown
plain_text
a year ago
2.8 kB
9
Indexable
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.Civil;
using Autodesk.Civil.DatabaseServices;
using Autodesk.Civil.ApplicationServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
public class Principal
{
[CommandMethod("C_Pr_View")]
public void C_Pr_View()
{
// Iniciar o documento ativo
Document DocCad = Application.DocumentManager.MdiActiveDocument;
Database DocData = DocCad.Database;
Editor DocEditor = DocCad.Editor;
// Obter a base de dados do Civil 3D
CivilDocument CivilDocumento = CivilApplication.ActiveDocument;
using (Transaction tr = DocData.TransactionManager.StartTransaction())
{
// Selecionar o alinhamento
PromptEntityOptions peo = new PromptEntityOptions("\nSelecione um alinhamento: ");
peo.SetRejectMessage("\nIsso não é um alinhamento.");
peo.AddAllowedClass(typeof(Alignment), false);
PromptEntityResult per = DocEditor.GetEntity(peo);
if (per.Status != PromptStatus.OK) return;
Alignment alignment = tr.GetObject(per.ObjectId, OpenMode.ForRead) as Alignment;
// Verificar se o alinhamento tem perfis
ObjectIdCollection profileIds = alignment.GetProfileIds();
if (profileIds.Count == 0)
{
DocEditor.WriteMessage("\nO alinhamento não possui perfis.");
return;
}
// Obter o espaço do modelo
BlockTable bt = tr.GetObject(DocData.BlockTableId, OpenMode.ForRead) as BlockTable;
BlockTableRecord modelSpace = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
// Configurar a posição inicial para o primeiro ProfileView
double xPosition = 0.0;
double yPosition = 0.0;
double xOffset = 200.0; // Distância entre ProfileViews
foreach (ObjectId profileId in profileIds)
{
Profile profile = tr.GetObject(profileId, OpenMode.ForRead) as Profile;
// Criar o ProfileView
ProfileView profileView = ProfileView.Create(modelSpace, profileId, new Point3d(xPosition, yPosition, 0));
// Configurar o ProfileView conforme necessário
profileView.StyleId = CivilDocumento.Styles.ProfileViewStyles[0]; // Estilo padrão
profileView.Layer = "0"; // Camada para ProfileViews
// Atualizar a posição para o próximo ProfileView
xPosition += xOffset;
}
tr.Commit();
}
}
}
Editor is loading...
Leave a Comment