2017-05-07 108 views
0

當我使用功能viewer.setCutPlanes()被切割成不包括飛機:封面削減剖切面

enter image description here enter image description here

但用瀏覽器部分的分析工具平面切割,他們得到覆蓋(和每個蓋是其自身節點的一部分,這是很好):

enter image description here

的蓋板使用012時,我怎樣才能添加到模型?

PS:我在查看器中找到了部分工具擴展,但似乎它的所有相關功能都是私有的。我應該嘗試複製這個擴展名並在那裏公開必要的功能嗎?是否有ES6版本的回購?

回答

1

不幸的是,Forge Viewer沒有ES6模塊。 Viewer3D.setCutPlanes()是僅用於生產ThreeJS裁剪平面的實用方法,現在,該截取覆蓋功能由Autodesk.Viewing.Extensions.Section.SectionTool存檔。

  1. getDiffuseColor()
  2. init_three_triangulator()
  3. init_three_intersector()
  4. updateCapMeshes()

此外:下面列出

功能必須從SectionTool擴展,如果你想自己控制下執行該功能被複制,上述那些私人功能中的_viewer變量應該由Viewer3DImpl實例替代,即Viewer3D.impl。或者你也可以像下面改變updateCapMeshes函數聲明:

function updateCapMeshes(_viewer, plane) { 

    init_three_triangulator(); 
    init_three_intersector(); 

    // ... Original content of updateCapMeshes below ... 
} 

呼叫修改updateCapMeshes函數來創建切蓋這樣的方式:

//-- 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) ]); 

,你會得到喜歡這幅畫結果沒有TransformControlResult of createMyOwnPlane

順便說一句,切割蓋可通過這種方式〜

除去
var oldsection = viewer.impl.sceneAfter.getObjectByName("section"); 
if (oldsection) 
    viewer.impl.sceneAfter.remove(oldsection); 

viewer.setCutPlanes(); 
+0

非常感謝。 {} – shinzou

+0

@ eason-kang你知道這個計劃將來會成爲一個公共的Viewer3D API嗎?複製私有實現有點脆弱。謝謝。 – bartzy