利用instanceTree倒推退出dbId /** * elid轉換dbid * @param elIds {Array} * @returns dbIds {Array} */ elIdToDbId(elIds){ let itNodeAccess = this.viewer.model.getData().instanceTree.nodeAccess; let dbIds=[]; elIds.forEach(elId=>{ let elIdIndex = itNodeAccess.nameSuffixes.indexOf(elId); let dbId = this.findKeyByValue(elIdIndex,itNodeAccess.dbIdToIndex); dbIds.push(dbId) }) return dbIds; } /** * * @param value value 值 * @param data 對象 * @param compare * @returns {string} 對象的key */ findKeyByValue (value,data, compare = (a, b) => a === b) { return Object.keys(data).find(k => compare(data[k], value)) } /** * dbid轉換elid * @param dbIds {Array} * @returns elIds {Array} */ dbIdToElId(dbIds){ const it = this.viewer.model.getData().instanceTree; let elIds=[]; dbIds.forEach(dbId=>{ let dbIdIndex = it.nodeAccess.dbIdToIndex[dbId]; let elId = it.nodeAccess.nameSuffixes[dbIdIndex]; elIds.push(elId) }) return elIds; }