# CuttingTool

#### new Cesium.CuttingTool(viewer, layers, options)
MapGIS/Tools/CuttingTool.js 31

三维场景裁剪工具集

Name | Type | Description
--- | --- | ---
`viewer` | Viewer | 三维视图对象
`layers` | Array.<MapGISM3DSet> |
`options` | Object | optional 可选参数
Name | Type | Description
--- | --- | ---
`onErrorCallback` | function | optional 发生错误时的回调函数，type：错误类型，msg：错误信息。0：点数量小于2；1：为凹多边形，不支持；2：有空对象；3：格式不是笛卡尔对象；4：裁剪体高度不正确

### Members

#### isCuttingTerrain : Boolean
MapGIS/Tools/CuttingTool.js 71

是否支持开挖地形 打开后通过`CuttingTool#createModelCuttingVolume` 和 `CuttingTool#createModelCuttingPlaneFromPolyline` 创建的裁剪体会同时对地形做裁剪。 `CuttingTool#createModelCuttingPlaneFromPolyline` 添加地形支持时由于缺少高度所以不会开启剖切面封边

Default Value: `false`

### Methods

#### _createVolumeCuttingPlanes(normals, originalPoints, layer, options)
MapGIS/Tools/CuttingTool.js 337

通过包围面，创建裁剪体

Name | Type | Description
--- | --- | ---
`normals` | Array.<Cartesian3> | 面法线数组
`originalPoints` | Array.<Cartesian3> | 面中心点数组
`layer` | MapGISM3DSet | 要裁剪的M3D
`options` | Object | 可选参数

#### changePlaneColor(color)
MapGIS/Tools/CuttingTool.js 283

修改辅助剖切面颜色

Name | Type | Default | Description
--- | --- | --- | ---
`color` | Color | `Color.WHITE.withAlpha(0.5)` | optional 辅助面颜色

#### createModelCuttingPlane(normal, options)
MapGIS/Tools/CuttingTool.js 94

创建模型裁剪面

Name | Type | Description
--- | --- | ---
`normal` | Cartesian3 | 裁剪面的法线
`options` | Object | optional 可选参数
Name | Type | Default | Description
--- | --- | --- | ---
`distance` | Object | `0` | optional 裁剪面的初始距离
`scaleWidth` | Number | `2.5` | optional 辅助面宽度缩放比例
`scaleHeight` | Number | `2.5` | optional 辅助面高度缩放比例
`unionClippingRegions` | Boolean | `false` | optional 裁剪方向，false：原方向，true：反向
`color` | Color | `Color.WHITE.withAlpha(0.5)` | optional 辅助面颜色
`showCuttingPlane` | Boolean | `true` | optional 是否显示辅助面

#### createModelCuttingPlaneFromLine(pointA, pointB, options)
MapGIS/Tools/CuttingTool.js 308

通过直线，绘制模型裁剪面

Name | Type | Description
--- | --- | ---
`pointA` | Cartesian3 | 直线起始点 A，必须为角度制的经纬度值
`pointB` | Cartesian3 | 直线终止点 B，必须为角度制的经纬度值
`options` | Object | optional 可选参数
Name | Type | Default | Description
--- | --- | --- | ---
`scaleWidth` | Number | `2.5` | optional 辅助面宽度缩放比例
`scaleHeight` | Number | `2.5` | optional 辅助面高度缩放比例
`unionClippingRegions` | Boolean | `false` | optional 裁剪方向，false为原方向，true为反方向
`color` | Color | `Color.WHITE.withAlpha(0.5)` | optional 辅助面颜色
`showCuttingPlane` | Boolean | `true` | optional 是否显示辅助面

#### createModelCuttingPlaneFromPolyline(positions, options)
MapGIS/Tools/CuttingTool.js 320

通过折线，绘制模型裁剪面，请提两个以上的点，否则不执行剖切分析。

Name | Type | Description
--- | --- | ---
`positions` | Array.<Cartesian3> | 折线的点坐标
`options` | Object | optional 可选参数
Name | Type | Default | Description
--- | --- | --- | ---
`unionClippingRegions` | Boolean | `false` | optional 裁剪方向，true为原方向，false为反方向

#### createModelCuttingPolygon(positions, minHeight, maxHeight, options)
MapGIS/Tools/CuttingTool.js 472

多边形几何裁剪
通过边界区域，以及高程，构建裁剪几何体。支持凹多边形裁剪，但对封边效果支持不好

Name | Type | Description
--- | --- | ---
`positions` | Array | 区域边界点数组,点需要按照顺时针方向选取。要求是经纬度坐标
`minHeight` | Number | 最小高程
`maxHeight` | Number | 最大高程
`options` | Object | 可选参数
Name | Type | Default | Description
--- | --- | --- | ---
`color` | Color | `new Color.WIHTE.withAlpha(0.2)` | optional 可选参数，配置裁剪体的颜色，以及透明度
`unionClippingRegions` | Boolean | `false` | optional 可选参数，裁剪方向，false：原方向，true反方向
`showCuttingPlane` | Boolean | `true` | optional 是否显示辅助面

##### Example:

    var cutTool = new Cesium.CuttingTool(viewer, layerList);
    var positions = [
        113.0406, 30.0378,
        113.0595, 30.0378,
        113.0595, 30.0297,
        113.0762, 30.0297,
        113.0762, 30.0179,
        113.0595, 30.0179,
        113.0595, 30.0099,
        113.0406, 30.0099
    ];
    cutTool.createModelCuttingPolygon(positions, -1000, 500, {
        //裁剪方向，false：原方向，true反方向
        unionClippingRegions: false,
        //配置裁剪体的颜色，以及透明度
        color: new Cesium.Color(1, 1, 1, 0.2),
        //是否显示裁剪体
        showCuttingPlane: true
    })

#### createModelCuttingVolume(positions, minHeight, maxHeight, options)
MapGIS/Tools/CuttingTool.js 431

通过边界区域，以及最小最大高程，构建裁剪体

Name | Type | Description
--- | --- | ---
`positions` | Array.<Cartesian3> | 区域边界点数组,点需要按照顺时针方向选取
`minHeight` | Number | 最小高程
`maxHeight` | Number | 最大高程
`options` | Object | 可选参数
Name | Type | Default | Description
--- | --- | --- | ---
`color` | Color | `new Color.WIHTE.withAlpha(0.2)` | optional 可选参数，配置裁剪体的颜色，以及透明度
`unionClippingRegions` | Boolean | `false` | optional 可选参数，裁剪方向，false：原方向，true反方向
`showCuttingPlane` | Boolean | `true` | optional 是否显示辅助面
`terrainGroundFillImage` | String | `'Assets/Images/sandydrysoil-albedo2b.jpg'` | optional 地形封边底面颜色纹理资源路径
`terrainWallFillImage` | String | `'Assets/Images/wall-texture-default.jpg'` | optional 地形封边剖面颜色纹理资源路径

#### enabled(value)
MapGIS/Tools/CuttingTool.js 601

开关当前被CuttingTool管理的裁剪体

Name | Type | Description
--- | --- | ---
`value` | Boolean |

#### removeAll()
MapGIS/Tools/CuttingTool.js 555

移除所有裁剪面

##### Example:

    var cutTool = new Cesium.CuttingTool(viewer, layerList);

    cutTool.removeAll();

#### showCuttingPlane(showPlane)
MapGIS/Tools/CuttingTool.js 686

显示或隐藏所有辅助剖切面(体)

Name | Type | Default | Description
--- | --- | --- | ---
`showPlane` | Boolean | `true` | optional 显示或隐藏所有辅助剖切面(体)，true为显示所有辅助剖切面(体)，false为隐藏所有辅助剖切面(体)