2022-11-04 11:39:56 +08:00
|
|
|
<html>
|
|
|
|
|
|
|
|
<head>
|
2022-11-28 09:51:30 +08:00
|
|
|
<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>
|
2023-01-05 10:51:54 +08:00
|
|
|
<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";
|
2022-11-28 09:51:30 +08:00
|
|
|
import DxfSettingsPanel from './demo/settings/DxfSettingsPanel.js';
|
|
|
|
import LayerManager from './demo/layerManager/LayerManager.js';
|
2022-11-04 11:39:56 +08:00
|
|
|
|
|
|
|
const config = {
|
2022-11-06 13:58:43 +08:00
|
|
|
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"];
|
2022-11-28 09:51:30 +08:00
|
|
|
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>
|