Files
gemini-viewer-examples/public/demo/empty_dxf_project.html

154 lines
5.7 KiB
HTML
Raw Normal View History

2022-11-04 11:39:56 +08:00
<html>
<head>
<link rel="icon" href="./demo/favicon.ico" />
<link rel="stylesheet" type="text/css" href="./demo/global.css" />
<link rel="stylesheet" href="./demo/layerManager/layerManager.css">
<link rel="stylesheet" href="./demo/settings/SettingsPanel.css">
2022-11-04 11:39:56 +08:00
<style>
2023-05-15 19:30:47 +08:00
#myCanvas {
width: 100%;
height: 100%;
}
2022-11-04 11:39:56 +08:00
.upload-btn {
margin-top: 2em;
}
.upload-btn button {
width: 0.1px;
height: 0.1px;
opacity: 0;
overflow: hidden;
position: absolute;
z-index: -1;
}
.upload-btn label {
color: #353535;
background: gray;
border: 0;
border-radius: 3px;
/*transition: ease 0.2s background-color;*/
font-size: 1rem;
font-weight: 700;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
display: inline-block;
overflow: hidden;
padding: 0.625rem 1.25rem;
}
.upload-btn label:hover {
background: #DDD;
}
.upload-btn svg {
width: 1em;
height: 1em;
vertical-align: middle;
fill: currentColor;
margin-top: -0.25em;
margin-right: 0.25em;
}
</style>
</head>
<body>
<div id="app">
<div id="myCanvas" class="container"></div>
2022-11-04 11:39:56 +08:00
</div>
<div style="position: absolute; top: 10px; opacity: 0.6; width: 100%;text-align: center;">
<div class="upload-btn" id="uploadBtn">
<button id="uploadModelFile" type="button">点此上传本地模型文件</button>
<label for="uploadModelFile" title="">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path d="M10 0l-5.2 4.9h3.3v5.1h3.8v-5.1h3.3l-5.2-4.9zm9.3 11.5l-3.2-2.1h-2l3.4 2.6h-3.5c-.1 0-.2.1-.2.1l-.8 2.3h-6l-.8-2.2c-.1-.1-.1-.2-.2-.2h-3.6l3.4-2.6h-2l-3.2 2.1c-.4.3-.7 1-.6 1.5l.6 3.1c.1.5.7.9 1.2.9h16.3c.6 0 1.1-.4 1.3-.9l.6-3.1c.1-.5-.2-1.2-.7-1.5z"></path></svg>
<span>Upload dxf</span>
</label>
<div style="margin-top: 1em;">
<input id="fileUrlInput" style="display: inline-block; width: 20em; height: 2em;">
<button
style="width: 8em; height: 2em; color: #fff; overflow: auto; z-index: 1; opacity: 1; background: #000;"
id="loadDxf">加载DXF
</button>
</div>
</div>
</div>
<script type="module">
2023-02-07 19:11:42 +08:00
import { DxfViewer, LocalDxfUploader, ToolbarMenuId } from "./demo/libs/gemini-viewer.esm.min.js";
import DxfSettingsPanel from './demo/settings/DxfSettingsPanel.js';
import LayerManager from './demo/layerManager/LayerManager.js';
2022-11-04 11:39:56 +08:00
const config = {
containerId: "myCanvas",
2022-11-04 11:39:56 +08:00
enableAxisGizmo: true,
enableToolbar: true,
enableBottomBar: true,
enableSpinner: true,
enableProgressBar: true,
enableLayoutBar: true,
2023-02-07 19:09:26 +08:00
toolbarMenuConfig: {
[ToolbarMenuId.Settings]: {
onActive: () => {
console.log("[Toolbar]", "Activate Settings");
if (!window.dxfSettingsPanel) {
window.dxfSettingsPanel = new DxfSettingsPanel(window.viewer);
}
window.dxfSettingsPanel.show();
},
onDeactive: () => {
console.log("[Toolbar]", "Deactivate Settings");
if (!window.dxfSettingsPanel) {
window.dxfSettingsPanel = new DxfSettingsPanel(window.viewer);
}
window.dxfSettingsPanel.hide();
},
},
[ToolbarMenuId.Layers]: {
onActive: () => {
console.log("[Toolbar]", "Activate Layers");
if (!window.layerManager) {
window.layerManager = new LayerManager(window.viewer);
}
window.layerManager.show();
},
onDeactive: () => {
console.log("[Toolbar]", "Deactivate Layers");
if (!window.layerManager) {
window.layerManager = new LayerManager(window.viewer);
}
window.layerManager.hide();
},
},
},
2022-11-04 11:39:56 +08:00
};
const viewer = new DxfViewer(config);
2023-06-11 09:12:27 +08:00
// const fontFiles = ["./demo/three/fonts/Microsoft_YaHei_Regular.typeface.json"];
const fontFiles = ["./demo/three/fonts/hztxt.shx", "./demo/three/fonts/simplex.shx"];
2022-11-04 11:39:56 +08:00
await viewer.setFont(fontFiles);
2023-02-07 19:09:26 +08:00
window.viewer = viewer;
2022-11-04 11:39:56 +08:00
const modelUploader = new LocalDxfUploader(viewer);
modelUploader.onSuccess = () => {
!viewer.layerManager && (viewer.layerManager = new LayerManager(viewer));
}
document.getElementById("uploadModelFile").onclick = function() {
modelUploader.openFileBrowserToUpload();
}
document.getElementById("loadDxf").onclick = function() {
const url = document.getElementById("fileUrlInput").value;
if (url) {
viewer.loadModelAsync({ src: url, merge: true }).then(() => {
console.log(`[Demo] Loaded model ${url}`);
!viewer.layerManager && (viewer.layerManager = new LayerManager(viewer));
})
}
}
// as a demo page, add dxfSettingsPanel to window!
window.dxfSettingsPanel = new DxfSettingsPanel(viewer);
</script>
</body>
</html>