很遗憾,Forge Viewer 没有 ES6 模块。 Viewer3D.setCutPlanes() 是一种仅用于制作ThreeJS 剪裁平面的实用方法,现在Autodesk.Viewing.Extensions.Section.SectionTool 存档了剪切覆盖功能。
如果您想在自我控制下执行此功能,则必须从 SectionTool 扩展名中复制以下列出的功能:
getDiffuseColor()
init_three_triangulator()
init_three_intersector()
updateCapMeshes()
此外,上述私有函数中的_viewer 变量应替换为Viewer3DImpl 实例,即Viewer3D.impl。或者您可以更改updateCapMeshes 的函数声明,如下所示:
function updateCapMeshes( _viewer, plane ) {
init_three_triangulator();
init_three_intersector();
// ... Original content of updateCapMeshes below ...
}
像这样调用修改后的updateCapMeshes函数来创建cut-cover:
//-- Helper function to create your own cut planes.
function createMyOwnPlane( _viewer, _sectionPlanes ) {
if (_sectionPlanes.length === 1) {
updateCapMeshes(_viewer, new THREE.Plane().setComponents(_sectionPlanes[0].x, _sectionPlanes[0].y, _sectionPlanes[0].z, _sectionPlanes[0].w));
}
_viewer.setCutPlanes(_sectionPlanes);
}
//-- Call functions here.
var viewer = viewerApp.getCurrentViewer();
createMyOwnPlane( viewer.impl, [ new THREE.Vector4(0, 0, 1, 0) ] );
如果没有TransformControl,你会得到这样的结果:
Result of createMyOwnPlane
顺便说一句,这样就可以去掉cut-cover~
var oldsection = viewer.impl.sceneAfter.getObjectByName("section");
if (oldsection)
viewer.impl.sceneAfter.remove(oldsection);
viewer.setCutPlanes();