Autodesk 剖切面中的覆盖切口
当我使用函数Autodesk 剖切面中的覆盖切口,autodesk,autodesk-forge,autodesk-viewer,Autodesk,Autodesk Forge,Autodesk Viewer,当我使用函数viewer.setCutPlanes()时,切割的平面不会被覆盖: 但是使用查看器的截面分析工具plane cut,它们确实会被覆盖(每个覆盖都是自己节点的一部分,这很好): 使用viewer.setCutPlanes()时,如何将这些封套添加到模型中 PS:我在查看器中找到了部分工具扩展,但它的所有相关功能似乎都是私有的。我应该尝试复制这个扩展并在那里公开必要的函数吗?ES6版本是否有回购协议?不幸的是,Forge Viewer没有ES6模块。Viewer3D.setCut
viewer.setCutPlanes()
时,切割的平面不会被覆盖:
但是使用查看器的截面分析工具plane cut,它们确实会被覆盖(每个覆盖都是自己节点的一部分,这很好):
使用viewer.setCutPlanes()
时,如何将这些封套添加到模型中
PS:我在查看器中找到了部分工具扩展,但它的所有相关功能似乎都是私有的。我应该尝试复制这个扩展并在那里公开必要的函数吗?ES6版本是否有回购协议?不幸的是,
Forge Viewer没有ES6模块。Viewer3D.setCutPlanes()
是一种仅用于生成ThreeJS
剪裁平面的实用方法,现在由Autodesk.Viewing.Extensions.Section.SectionTool
存档剪切保护层功能
如果要在自控下执行此功能,必须从部分工具
扩展中复制下列功能:
getDiffuseColor()
init\u three\u triangulator()
init\u three\u intersector()
updateCapMeshes()
此外,上述私有函数中的\u viewer
变量应替换为Viewer3DImpl
实例,即Viewer3D.impl
。或者您可以更改updateCapMeshes
的函数声明,如下所示:
function updateCapMeshes( _viewer, plane ) {
init_three_triangulator();
init_three_intersector();
// ... Original content of updateCapMeshes below ...
}
调用modifiedupdateCapMeshes
函数以按如下方式创建剪切封面:
//-- 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
,您将得到如下图片所示的结果:
顺便说一句,切割盖可以通过这种方式移除~
var oldsection = viewer.impl.sceneAfter.getObjectByName("section");
if (oldsection)
viewer.impl.sceneAfter.remove(oldsection);
viewer.setCutPlanes();
@易信康你知道这是不是计划在未来成为一个公共的Viewer3D API?复制私有实现有点脆弱。谢谢