npm.io
0.0.74 • Published 2d ago

tinybim

Licence
ISC
Version
0.0.74
Deps
3
Size
833 kB
Vulns
0
Weekly
0

官方网站 https://tinybim.cn

//测试天地图Key,请求次数有限,请自行申请
const keys: string[] = ["26eb0c7b03694c6fe26d61fb85ba12fe"];

export async function load_tiny_app(loaders: IFileResolver[], div: HTMLDivElement, store: IStore = null) {

    if(!(navigator as any)?.gpu){
        window.location.href ="https://tinybim.cn/notsupport";
        return;
    }
    
    if (!loaders || loaders.length == 0) {
        return null;
    }
    const app = new TinyApp({ recordable: true, asset_manager: new AssetManager() });
    console.log("TinyBIM version:",app.version);
    await app.init(div);
    const win = app.default_window;
    win.selection.selection_mode = SelectionMode.element;
    win.active();

    const tasks: Promise<void>[] = [];
    const len = loaders.length;
    for (let i = 0; i < len; i++) {
        tasks.push(load_model(app, loaders[i], store));
    }
    await Promise.any(tasks);
    const lerc_url = "/lerc-wasm.wasm";
    const gis_manager = win.gis_manager;
    gis_manager.set_terrain_loader(new CachedArcgisTerrainLoader(lerc_url));
    gis_manager.set_img_loader(new CachedTiandituLoader(keys));

    const menu = new TbContextMenuUI(win);
    menu.add_default();
    menu.install();

    const bk = new Background();
    bk.type = BackgroundType.skybox;
    bk.skybox = "天空1";
    win.background = bk;
    win.set_env("天空1");

    win.render_mode = RenderMode.texture;
    return app;
}

async function load_model(app: TinyApp, loader: IFileResolver, store: IStore = null) {

    const model = app.create_model();
    if (store) {
        await model.load(loader, store);
    }
    else {
        await model.load(loader);
    }

    const wnd = app.default_window;
    if (model.file_type != FileType.Dwg) {
        const mv = model.views.find(v => v.type == ModelViewType.ThreeD) as IView;
        if (mv) {
            await wnd.attach_view(mv);
        }
    }
    else {
        const mv = model.views[0];
        if (mv) {
            await wnd.attach_view(mv);
        }
    }
}

更多示例 https://github.com/tinybim/Samples

Keywords