测量工具
<h1>测量功能</h1>
<p>测量功能对应的类:<code>BCore.Extension.Measure</code>,相关功能主要有以下两类子属性来实现:</p>
<ul>
<li><strong>MeasureManager</strong>: 负责管理测量对象</li>
<li><strong>MeasureConfig</strong>: 用于配置测量的参数</li>
</ul>
<h2>一、MeasureConfig</h2>
<h3>构造函数</h3>
<pre><code class="language-javascript">new BCore.Extension.Measure.MeasureConfiger)</code></pre>
<h4>成员变量</h4>
<table>
<thead>
<tr>
<th>成员变量</th>
<th>类型</th>
<th>说明</th>
<th>默认值</th>
</tr>
</thead>
<tbody>
<tr>
<td>viewer3D</td>
<td>BCore.Viewer.Viewer3D</td>
<td>视图对象</td>
<td></td>
</tr>
<tr>
<td>isShowMeasureTag</td>
<td>boolean</td>
<td>是否显示测量标签</td>
<td>true</td>
</tr>
<tr>
<td>isShowMeasureBoard</td>
<td>boolean</td>
<td>是否显示测量面板</td>
<td>true</td>
</tr>
<tr>
<td>pickedColor</td>
<td>string</td>
<td>拾取/部分线段颜色</td>
<td><code>#FA8C16</code></td>
</tr>
<tr>
<td>pickedOpacity</td>
<td>number</td>
<td>拾取/部分线段透明度</td>
<td>0.3</td>
</tr>
<tr>
<td>drawFaceColor</td>
<td>string</td>
<td>面填充颜色</td>
<td><code>#FA8C16</code></td>
</tr>
<tr>
<td>disPickedColor</td>
<td>string</td>
<td>非拾取状态颜色</td>
<td><code>#D46B08</code></td>
</tr>
<tr>
<td>disPicked</td>
<td>number</td>
<td>非拾取状态透明度</td>
<td>0.15</td>
</tr>
<tr>
<td>depthTest</td>
<td>boolean</td>
<td>深度测试</td>
<td>true</td>
</tr>
<tr>
<td>transparent</td>
<td>boolean</td>
<td>部分对象透明</td>
<td>true</td>
</tr>
<tr>
<td>opacity</td>
<td>number</td>
<td>部分对象透明度</td>
<td>03</td>
</tr>
</tbody>
</table>
<h2>二、 MeasureManager</h2>
<h3>构造函数</h3>
<pre><code class="language-javascript">new BCore.Extension.Measure.MeasureManager(config)</code></pre>
<h3>参数</h3>
<ul>
<li><code>config</code>: <code>BCore.Extension.Measure.MeasureConfig</code> 测量配置参数</li>
</ul>
<h3>方法</h3>
<ul>
<li><code>openMeasure()</code>: 开启测量</li>
<li><code>closeMeasure()</code>: 关闭测量</li>
<li><code>getMeasureType()</code>: 获取当前测量类型</li>
<li><code>setMeasureType(type)</code>: 设置测量类型</li>
<li><code>deleteMeasureResult(name, type)</code>:测量结果</li>
<li><code>clearAllMeasurdeResult()</code>: 清空所有测量结果</li>
<li><code>setMeasureBoardVisible(bol)</code>: 设置测量面板可见性</li>
<li><code>getMeasureBoardVisible()</code>: 获取测量面板可见性</li>
<li><code>setMeasureTagsVisible(bol)</code>: 设置测量结果标签可见性</li>
<li><code>getMeasureTagsVisible()</code>: 获取测量结果标签可见性</li>
<li><code>setMeasurdeResultActive(name)</code>: 设置测量结果标签激活</li>
<li><code>setMeasurdeResultDisActive(name)</code>: 取消测量结果激活</li>
<li><code>getActiveMeasurdeResultName()</code>: 获取当前激活的测量结果名称</li>
<li><code>getMeasureState()</code>: 获取测量状态</li>
</ul>
<h3>事件监听</h3>
<ul>
<li><strong>Measured</strong>: 测量完成事件,用户可以通过监听此事件获取量测结果。</li>
<li><strong>MeasureTypeChanged</strong>: 测量类型变化事件。</li>
<li><strong>MeasureDrawClick</strong>: 测量绘更新事件。</li>
<li><strong>MeasureError</strong>: 测量出错事件。
<strong>MeasureRemoved</strong>: 测量结果移除事件。</li>
</ul>
<h3>示例代码</h3>
<p>以下是一个简单的示例,展示了如何使用测量管理器进行测量:</p>
<pre><code class="language-javascript">let measureConfig = new BCore.Extension.MeasureConfig(mViewer3D);
let measureManager = new BCore.Extension.MeasureManager(measureConfig);
measureManager.openMeasure();
// 设置测量类型为面积拾取
measureManager.setMeasureType(BCore.Static.MeasureType.Area);
let measuredCallback = (e) =&gt; {
if (e.type === BCore.Static.MeasureType.Area) {
// 处理面积测量结果
console.log(e);
}
};
mViewer3D.addEventListenerMeasured&#039;, measuredCallback);</code></pre>
<h3>总结</h3>
<p>测量功能支持面积、线段及体积等多种测量类型。用户可以通过配置和事件监听来自由使用并处理测量结果。</p>