Tạo nhãn cao độ và Pick chọn trên TinSurface trong Civil3D với ứng dụng API

Yuri Boyka July 23, 2015 0

Mình xin chia sẻ 1 đoạn code chọn vị trí trên Tin Surface sẽ thể hiện cao độ trên TinSurface và tên nhãn trên dòng Command:

[CommandMethod(“TAONHANCAODO”)]
public static void TAONHANCAODOS()
{
acad.Document doc = acad.Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
using(acad.DocumentLock acLock = doc.LockDocument())
{
using(Transaction tr = db.TransactionManager.StartTransaction())
{
// Chọn đối tượng Tin Surface
PromptEntityOptions _tin = new PromptEntityOptions(“\n- Chọn Tin Surface:”);
// Lựa chọn đối tượng và thông báo nếu không chọn đúng Tin
_tin.SetRejectMessage(“\n- Chỉ chọn Tin Surface”);
_tin.AddAllowedClass(typeof(TinSurface), true);
PromptEntityResult _ent = ed.GetEntity(_tin);
if (_ent.Status != PromptStatus.OK) return;

ObjectId _obj = _ent.ObjectId;

// Chọn nhãn cao độ
PromptPointOptions _ppo = new PromptPointOptions(“\n- Chọn nhãn cao độ:”);
PromptPointResult _ppr = ed.GetPoint(_ppo);
if (_ppr.Status != PromptStatus.OK) return;

// giá trị cao độ
double _x = _ppr.Value.X;
double _y = _ppr.Value.Y;
Point2d _point2d = new Point2d(_x, _y);
try
{
ObjectId _sur = SurfaceElevationLabel.Create(_obj, _point2d);
SurfaceElevationLabel _label = _sur.GetObject(OpenMode.ForWrite) as SurfaceElevationLabel;
_label.ColorIndex = 1;
ed.WriteMessage(“\n- Tạo nhãn cao độ và tên của Style là:” + _label.StyleName.ToString());
}
catch(Autodesk.AutoCAD.Runtime.Exception ex)
{
ed.WriteMessage(“\n thông báo:” + ex.Message);
}

tr.Commit();
}
}
}

F5 hoặc Start để khởi động Civil3D, sau đó NETLOAD file .DLL lên, gõ lệnh TAONHANCAODO, chọn TinSurafce và chọn điểm thể hiện cao độ:

1

 

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

Leave A Response »

You must be logged in to post a comment.