Mở đầu

Bài này chủ đề về tam giác ôn luyện kiến thức tính toán học môt chút nhé các bác 😍 Trong không gian Oxyz cho tam giác ABC có tọa độ ba đỉnh lần lượt là : A(xA;yA;zA);B(xB;yB;zB);C(xC;yC;zC). Khi đó tọa độ trọng tâm G của tam giác ABC là : G(1/3(xA+xB+xC3);1/3(yA+yB+yC3);1/3(zA+zB+zC3)) Trongtamtamgiac

Revit API

Tìm trọng tâm của một tam giác khi biết trước 3 điểm toạ độ của tam giác.

XYZ MedianPoint( MeshTriangle triangle )
{
XYZ p = XYZ.Zero;
p += triangle.get_Vertex( 0 );
p += triangle.get_Vertex( 1 );
p += triangle.get_Vertex( 2 );
p *= 0.3333333333333333;
return p;
}
view raw MedianPoint.cs hosted with ❤ by GitHub

Tương tự như trên mình có thể tìm được diện tích hình tam giác thường : Diện tích tam giác bằng 1 phần 2 tích của chiều cao hạ từ đỉnh với độ dài cạnh đối diện của đỉnh đó.

double TriangleArea( MeshTriangle triangle )
{
XYZ a = triangle.get_Vertex( 0 );
XYZ b = triangle.get_Vertex( 1 );
XYZ c = triangle.get_Vertex( 2 );
Line l = Line.CreateBound( a, b );
double h = l.Project( c ).Distance;
double area = 0.5 * l.Length * h;
return area;
}
view raw TriangleArea.cs hosted with ❤ by GitHub

Mở rộng

Với thuật toán trên ta có thể dùng để tìm ra một điểm trên một mặt phẳng.

/// <summary>
/// Return an arbitrary point on a planar planarFace,
/// namely the midpoint of the first mesh triangle.
/// </summary>
/// <returns name="point"></returns>
public static XYZ PointOnFace(PlanarFace planarFace)
{
XYZ point = new XYZ(0, 0, 0);
Mesh mesh = planarFace.Triangulate();
for (int i = 0; i < mesh.NumTriangles;)
{
MeshTriangle triangle = mesh.get_Triangle(i);
point += triangle.get_Vertex(0);
point += triangle.get_Vertex(1);
point += triangle.get_Vertex(2);
point *= 0.3333333333333333;
break;
}
return point;
}
view raw PointOnFace.cs hosted with ❤ by GitHub

Tổng kết

Bài này gợi ý cho một ý tượng đặt Familyinstance khi đối tượng khi đầu vào là một kí hiệu tam giác bên Cad import vào hoặc kí hiệu từ bản vẽ.Cám ơn các bác đã đọc bài viết.

Tham Khảo

dinhnghia.vn thebuildingcoder