Я использовал приведенный ниже код, чтобы получить ограничивающую рамку 2D-элемента.
function find2DBounds( fragList, fragId, dbId, bc ) {
const mesh = fragList.getVizmesh( fragId );
const vbr = new Autodesk.Viewing.Private.VertexBufferReader( mesh.geometry );
vbr.enumGeomsForObject( dbId, bc );
}
function get2DBounds( dbId, model ) {
const it = model.getData().instanceTree;
const fragList = model.getFragmentList();
let bounds = new THREE.Box3();
let bc = new Autodesk.Viewing.Private.BoundsCallback( bounds );
const dbId2fragId = model.getData().fragments.dbId2fragId;
const fragIds = dbId2fragId[dbId];
if( Array.isArray( fragIds ) ) {
for( let i = 0; i < fragIds.length; i++ ) {
find2DBounds( fragList, fragIds[i], dbId, bc );
}
} else if( typeof fragIds === 'number' ) {
find2DBounds( fragList, fragIds, dbId, bc );
}
return bc.bounds;
}
var model = this.viewer.model;
var modelData = model.getData();
var itree = modelData.instanceTree;
itree.enumNodeChildren(itree.getRootId(), function (dbId) {
// Here you go
cosnt bondingBox = get2DBounds( dbId, viewer.model );
}
Этот код правильно отображается в браузере и получает правильную ограничительную рамку для 2D-элементов. Но когда я попытался выполнить этот код в браузере через IOS, я не получил ограничивающую рамку для 2D-элементов.
Процесс использования вышеприведенного кода через IOS: - Создайте UIWebView в IOS - Вставьте html-страницу - Вставьте приведенный выше код java-скрипта в html-страницу - Получите все идентификаторы элементов для 2D-листа. - Получите ограничивающую рамку для тех, кто использует код выше.
заметил, что ограничивающая рамка бесконечна для всех 2D-объектов.
Не могли бы вы сказать мне, что не так с этим подходом?