Tạo bề mặt TIN Surface trong Civil3D với API

Yuri Boyka July 20, 2015 0

Trong Civil3D API cho phép ta tạo ra bề mặt Surface từ các Polyline, mình xin chia sẻ một đoạn code chọn các Polyline và tự động tạo ra bề mặt với tên, kiểu hiển thị của một TIN Surafce:

[CommandMethod(“TAOBEMAT”)]
public static void Chaomung()
{
acad.Document _doc = acad.Application.DocumentManager.MdiActiveDocument;
Editor _ed = _doc.Editor;
Civil.CivilDocument _civil = Civil.CivilApplication.ActiveDocument;
using (acad.DocumentLock acLck = acad.Application.DocumentManager.MdiActiveDocument.LockDocument())
{
using (Transaction tr = _doc.Database.TransactionManager.StartTransaction())
{
// Dùng bộ lọc, lọc các Polyline được chọn
TypedValue[] tv = new TypedValue[] { new TypedValue((int)DxfCode.Start, “LWPOLYLINE”) };
SelectionFilter sf = new SelectionFilter(tv);
PromptSelectionOptions _ent = new PromptSelectionOptions();
PromptSelectionResult ss = _ed.GetSelection(_ent, sf);
if (ss.Status != PromptStatus.OK) return;

// Khai báo 1 bộ chứa các đối tượng được chọn
ObjectId[] _obj = ss.Value.GetObjectIds();
ObjectIdCollection _obi = new ObjectIdCollection();
try
{
// Chọn Style cho Surface
ObjectId _style = _civil.Styles.SurfaceStyles[“Contours 2m and 10m (Background)”];
if (_style != null)
{
// Tạo 1 TIN Surface trống
ObjectId _surfaceID = TinSurface.Create(“MySurface”, _style);
TinSurface _Surface = tr.GetObject(_surfaceID, OpenMode.ForWrite) as TinSurface;

foreach (ObjectId ob in _obj)
{
Polyline _po = tr.GetObject(ob, OpenMode.ForRead) as Polyline;
_obi.Add(_po.ObjectId);
}
_Surface.ContoursDefinition.AddContours(_obi, 1.0, 100, 15.0, 4.0);
}
}
catch(System.Exception ex)
{
_ed.WriteMessage(“Tạo đường đòng mức bị lỗi !” + “” + ex.Message);
}
// Cập nhập
tr.Commit();
}
}
}

Sau khi viết xong, ta khởi động (F5) và vào chương trình Civil 3D NETLOAD File .DLL lên, Gọi lệnh TAOBEMAT, sau đó chọn tất cả các Polyline, chương trình sẽ tự động tạo tên bề mặt mới là MySurface:

1

 

Với Style là Contours 2m and 10m (Background):

 

1

1

 

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

 

 

Leave A Response »

You must be logged in to post a comment.