Gán giá trị thành cao độ cho Text trong Civil3D với ứng dụng API

Yuri Boyka July 26, 2015 5

Mình xin chia sẻ 1 đoạn code chuyển tất cả các Text được chọn có cao độ = 0 về Text có cao độ thực của Text với ứng dụng API:

[CommandMethod(“CHUYENTEXTVECAODO”)]
public static void CHUYENTEXTVECAODOS()
{
using (Transaction tr = db.TransactionManager.StartTransaction())
{
TypedValue[] tv = new TypedValue[]{ new TypedValue((int)DxfCode.Start, “TEXT”)};
SelectionFilter sf = new SelectionFilter(tv);
PromptSelectionOptions _pt = new PromptSelectionOptions();
PromptSelectionResult _ptr = ed.GetSelection(_pt, sf);
if (_ptr.Status != PromptStatus.OK) return;
ObjectId[] _obj = _ptr.Value.GetObjectIds();
foreach (ObjectId ob in _obj)
{
Autodesk.AutoCAD.DatabaseServices.Entity _ent = tr.GetObject(ob, OpenMode.ForWrite) as Autodesk.AutoCAD.DatabaseServices.Entity;
if(_ent is DBText)
{
DBText _db = _ent as DBText;
Point3d _point3d = _db.Position;
string _elevation = _db.TextString;
Double _x = _point3d.X;
Double _y = _point3d.Y;
Point3d _new = new Point3d(_x, _y, Double.Parse(_elevation));
_db.Position = _new;
}
}

tr.Commit();
}
}

F5 hoặc Start  để khởi động Civil3D, sau đó vào chương trình NETLOAD file.DLL, gõ lệnh CHUYENTEXTVECAODO và chọn các Text cần chuyển về cao độ thực:

1

 

 

 

 

 

 

 

 

1

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

5 Comments »

  1. tronghai92 July 26, 2015 at 9:42 pm -

    Ad ơi, cho em hỏi API này có dùng trong autocad 2007 được không ạ

    • Yuri Boyka July 27, 2015 at 7:36 am -

      Được chứ bạn, chỉ cần thêm thư viện tham chiếu Autocad 2007 vào Reference trong Visual là được.

  2. Yuri Boyka July 27, 2015 at 7:36 am -
  3. tklehoang August 26, 2016 at 1:10 pm -

    Chào anh Trung, anh Việt.

    Hai anh có thể chỉ rõ hơn để em có thể dùng đoạn mã trên như thế nào không ạ. Nếu em không biết gì về API thì làm sao để có thể ứng dụng đoạn code trên. Mong hai anh giúp đỡ.
    Cảm ơn nhiều.

Leave A Response »

You must be logged in to post a comment.