Xóa nhiều đỉnh trên đường đỏ trong Civil3D với ứng dụng API

Yuri Boyka August 5, 2015 0

Trong Civil3D có chức năng xóa đỉnh trên Profile(Đường đỏ), tuy nhiên chỉ xóa thủ công từng đỉnh một, mình xin chia sẻ 1 đoạn code xóa nhiều đỉnh trong vùng được chọn với ứng dụng API:

acad.Document doc = acad.Application.DocumentManager.MdiActiveDocument;
Editor ed = acad.Application.DocumentManager.MdiActiveDocument.Editor;
Database db = acad.Application.DocumentManager.MdiActiveDocument.Database;
Profile mypro;
double station1 = 0;
double elevation1 = 0;
double station2 = 0;
double elevation2 = 0;

[CommandMethod(“DPVIS”)]
public void BOTRICONGTRONS()
{
using(acad.DocumentLock acLock = doc.LockDocument())
{
using(Transaction tr = db.TransactionManager.StartTransaction())
{
try
{
// ép kiểu ID về ProfileView
ObjectId myprofileview = promptForProfileView(“\n- Chọn ProfileView:”);
ProfileView proview = myprofileview.GetObject(OpenMode.ForRead) as ProfileView;

// ép kiểu ID về Profile
ObjectId myprofile = promptForProfile(“\n- Chọn Profile:”);
Profile mypro = myprofile.GetObject(OpenMode.ForRead) as Profile;

// Chọn điểm 1
PromptPointOptions ppopts1 = new PromptPointOptions(“\n- Chọn điểm bắt đầu trên ProfileView để bắt đầu xóa PVIs:”);
ppopts1.AllowNone = true;
PromptPointResult ppr1 = ed.GetPoint(ppopts1);

// Chọn điểm 2
PromptPointOptions ppopts2 = new PromptPointOptions(“\n- Chọn điểm kết thúc trên ProfileView để kết thúc xóa PVIs:”);
ppopts2.AllowNone = true;
PromptPointResult ppr2 = ed.GetPoint(ppopts2);

proview.FindStationAndElevationAtXY(ppr1.Value.X, ppr1.Value.Y, ref station1, ref elevation1);
proview.FindStationAndElevationAtXY(ppr2.Value.X, ppr2.Value.Y, ref station2, ref elevation2);

ProfilePVICollection pvicoll = mypro.PVIs;

foreach(ProfilePVI mypvis in pvicoll)
{
if((mypvis.Station > station1) && (mypvis.Station < station2))
{
pvicoll.Remove(mypvis);
}
}
// Cập nhập dữ liệu
tr.Commit();
}
catch(System.Exception ex)
{
ed.WriteMessage(ex.ToString());
}
ed.Regen();
ed.UpdateScreen();
}
}
}

Ban đầu:

1

 

 

Chọn điểm bắt đầu:

1

 

Chọn điểm kết thúc:

1

 

Sau khi xóa:

1

 

Chúc các bạn thành công!

Leave A Response »

You must be logged in to post a comment.