bool successed = converter.SplitModelPointByPolygon2D(multiPolygon, inputModel, inputModelPoint, out outputModelInner, out outputModelPointInner, out outputModelOut, out outputModelPointOut);
if (successed == false)
{
MessageBox.Show("执行失败!");
return;
}
注意:
输入的多边形必须是带Z,必须必须归平才行。
IMultiPolygon 也必须是带Z的。
IPolygon cutPolygon = polygon.Clone2(gviVertexAttribute.gviVertexAttributeZMID) as IPolygon;
for (int k = 0; k < cutPolygon.ExteriorRing.PointCount; k++)
{
IPoint currentPt = cutPolygon.ExteriorRing.GetPoint(k);
currentPt.Z = cutPolygon.ExteriorRing.GetPoint(0).Z;
cutPolygon.ExteriorRing.UpdatePoint(k, currentPt);
}
for (int k = 0; k < cutPolygon.InteriorRingCount; k++)
{
IRing ring = cutPolygon.GetInteriorRing(k);
for (int l = 0; l < ring.PointCount; l++)
{
IPoint tempPt = ring.GetPoint(l);
tempPt.Z = cutPolygon.ExteriorRing.GetPoint(0).Z;
ring.UpdatePoint(l, tempPt);
}
}
cutPolygon.Close();
IMultiPolygon multiPolygon = (new GeometryFactory()).CreateGeometry(gviGeometryType.gviGeometryMultiPolygon, gviVertexAttribute.gviVertexAttributeZMID) as IMultiPolygon;
multiPolygon.AddGeometry(cutPolygon);
补充:
这里的MinZ和MaxZ是在绝对坐标值,并不是在某个面上下各多少。哈哈哈。。。。
------------------- 欢迎支持作者QQ:gispar@qq.com