GetPolyLineCentroid
public static Point2d GetPolyLineCentroid(Polyline polyline) 
    { 
     double area = polyline.Area; 
     double cx = 0.0; 
     double cy = 0.0; 
     double X0 = 0.0; 
     double Y0 = 0.0; 
     double X1 = 0.0; 
     double Y1 = 0.0; 
     for (int i = 0; i < polyline.NumberOfVertices - 1; i++) 
     { 
      X0 = polyline.GetPoint2dAt(i).X; 
      Y0 = polyline.GetPoint2dAt(i).Y; 
      X1 = polyline.GetPoint2dAt(i + 1).X; 
      Y1 = polyline.GetPoint2dAt(i + 1).Y; 
      cx += (X0 + X1) * (X0 * Y1 - X1 * Y0); 
      cy += (Y0 + Y1) * (X0 * Y1 - X1 * Y0); 
     } 
     // last Point 
     int Lv = polyline.NumberOfVertices - 1; 
     X0 = polyline.GetPoint2dAt(Lv).X; 
     Y0 = polyline.GetPoint2dAt(Lv).Y; 
     X1 = polyline.GetPoint2dAt(0).X; 
     Y1 = polyline.GetPoint2dAt(0).Y; 
     cx += (X0 + X1) * (X0 * Y1 - X1 * Y0); 
     cy += (Y0 + Y1) * (X0 * Y1 - X1 * Y0); 
     cx /= 6 * area; 
     cy /= 6 * area; 
     return new Point2d(cx, cy); 
    } 
public static Point2d GetPolyLineCentroid(DBObjectCollection objs) 
{ 
    Solid3d Solid = new Solid3d(); 
    Solid.Extrude(((Region)Region.CreateFromCurves(objs)[0]), 1, 0); 
    Point2d centroid = new Point2d(Solid.MassProperties.Centroid.X, Solid.MassProperties.Centroid.Y); 
    Solid.Dispose(); 
    return centroid; 
}
 Python AutoCAD 系统设置
欢迎关注微信公众账号ByCAD
