CityMaker 8 二次开发之SplitModelPointByPolygon2D时的Polygon注意事项

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值