Tạo Sample Line trên tim tuyến đường trong Civil3D với ứng dụng API

Yuri Boyka August 3, 2015 0

Mình xin chia sẻ 1 đoạn code cách khởi tạo ra 1 Sample Line Group và tạo ra Sample Line bằng cách chọn điểm trên tuyến đường:

[CommandMethod(“SAMPLELINE”)]
public static void sampleline()
{
using (Transaction tr = db.TransactionManager.StartTransaction())
{
// Chọn tim tuyến đường
PromptEntityOptions _ent = new PromptEntityOptions(“\n- Chọn Ailgnment:”);
_ent.SetRejectMessage(“”);
_ent.AddAllowedClass(typeof(Alignment), true);
PromptEntityResult _ents = ed.GetEntity(_ent);
if (_ents.Status != PromptStatus.OK) return;
ObjectId _id = _ents.ObjectId;
Alignment alignment = tr.GetObject(_id, OpenMode.ForWrite) as Alignment;
ObjectId sampleLineGroupId = SampleLineGroup.Create(“New Group”, _id);
SampleLineGroup sampleLineGroup = tr.GetObject(sampleLineGroupId, OpenMode.ForWrite) as SampleLineGroup;

ObjectId slgId = SampleLineGroup.Create(“My SampleLineGroup”, alignment.ObjectId);
SampleLineGroup sam = tr.GetObject(slgId, OpenMode.ForWrite) as SampleLineGroup;

// Chọn điểm đặt cọc trên tuyến
PromptPointOptions _po = new PromptPointOptions(“\n- Chọn điểm đặt Sample Line:”);
PromptPointResult _pos = ed.GetPoint(_po);
if (_pos.Status != PromptStatus.OK) return;
double _station = 0.0;
double _x = 0.0;
alignment.StationOffset(_pos.Value.X, _pos.Value.Y, ref _station, ref _x);
ObjectId slatStationId = SampleLine.Create(“SampleLineByPoints”, slgId, _station);

SampleLine sampleLine = tr.GetObject(slatStationId, OpenMode.ForWrite) as SampleLine;
sampleLine.StyleId = civil.Styles.SampleLineStyles[0];

tr.Commit();
}
}

1

 

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

Leave A Response »

You must be logged in to post a comment.