2018-06-04
02:17 PM
- last edited on
2022-12-06
01:33 PM
by
Daniel Kassai
static GSErrCode ChamferPolygonWithRadius(Geometry::Polygon2DData& polygon2DData, vector<double> dRadius)
{
GSErrCode err = NoError;
////1.ChamferPolygon2DDataContour test
//GS::VAArray<Geometry::Polygon2DData> chamPolys;
//err = ChamferPolygon2DDataContour(polygon2DData, 1, 1.5, &chamPolys);
//WriteReport_Alert("count is%d", chamPolys.GetItemCount());
//WriteReport_Alert("err=%d", err);
//if (err == NoError && chamPolys.GetItemCount() == 1)
// Geometry::CopyPolygon2DData(&polygon2DData, chamPolys[1]);
//for (UIndex iResPoly = 1; iResPoly <= chamPolys.GetItemCount(); iResPoly++)
// Geometry::FreePolygon2DData(&chamPolys[iResPoly]);
//2.ChamferPolygon2DDataVertex test
Int32 minIndex = std::min(Int32(dRadius.size()), Int32(polygon2DData.nVertices));
WriteReport_Alert("maxindex%d", minIndex);
Int32 nvIndex = 0;
for (Int32 i = 0; i < minIndex; i++)
{
if (IS_ZERO(dRadius))
continue;
GS::VAArray<Geometry::Polygon2DData> chamPolys;
err = ChamferPolygon2DDataVertex(polygon2DData, i+1, dRadius, &chamPolys);
WriteReport_Alert("count is%d", chamPolys.GetItemCount());
WriteReport_Alert("err=%d", err);
if (err == NoError && chamPolys.GetItemCount() == 1)
Geometry::CopyPolygon2DData(&polygon2DData, chamPolys[1]);
for (UIndex iResPoly = 1; iResPoly <= chamPolys.GetItemCount(); iResPoly++)
Geometry::FreePolygon2DData(&chamPolys[iResPoly]);
}
return err;
}
2018-06-05 09:05 AM