forge 뷰어에서 룸 하이라이트를하려고합니다.
Revit에서는 방의 경계를 나타내는 선을 작성했습니다. svf로 변환 한 후 해당 행의 dbid를 알고 있습니다. 이제 방 테두리의 Three.Shape ()를 만들 수 있도록 해당 선의 시작 및 중지 지점 (정점)을 알고 싶습니다.
[편집] 나는 dbId에서 fragId를 얻습니다
function getFragIdFromDbId(viewer, dbid){
var returnValue;
var it = viewer.model.getData().instanceTree;
it.enumNodeFragments(dbid, function(fragId) {
console.log("dbId: " + dbid + " FragId : " + fragId);
returnValue = fragId;
}, false);
return returnValue;
}
질문 : fragId를 알게되면 시작 및 중지 지점 (정점)을 볼 수있는 방법이 있습니까? 또한 이러한 정점은 세계 공간 또는 로컬 공간입니까?
이것이 내가 한 일입니다. instanceTree를 호출하기 전에 모델로드가 완료되었는지 확인하십시오. 또한 제 경우에는 dbid와 fragid가 일대일로 인스턴스 트리에서 항상 해당되는지 확실하지 않습니다.
function getFragIdFromDbId(viewer, dbid) {
var returnValue;
var it = viewer.model.getData().instanceTree;
it.enumNodeFragments(dbid, function (fragId) {
console.log("dbId: " + dbid + " FragId : " + fragId);
returnValue = fragId;
}, false);
return returnValue;
}
...
// only need the start vertex
var floatArray = [];
for (var i = 0; i < dbidArray.length; i++) {
var fragId = getFragIdFromDbId(viewer, dbidArray[i]);
var mesh = viewer.impl.getRenderProxy(viewer.model, fragId);
var matrixWorld = mesh.matrixWorld;
var lmvBufferGeometry = mesh.geometry;
var lmvFloatArray = lmvBufferGeometry.vb; //this will have an array of 6 values 0,1,2 are start vertext , 3,4,5 are end vertex
floatArray.push(lmvFloatArray[0]);
floatArray.push(lmvFloatArray[1]);
floatArray.push(lmvFloatArray[2]);
}
//use matrixWorld to convert array to worldSpace
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다