@@ -96,6 +100,8 @@ import arrowRightUrl from '@/assets/images/conveyor/shapes/arrow-right.svg'
import rackUrl from '@/assets/images/conveyor/shapes/Rack.png'
import Plastic_Rough_JPG from "@/assets/Models/Plastic_Rough.jpg";
import storageBar_PNG from "@/assets/Models/storageBar.png";
+import {DXFViewer} from "three-dxf-viewer";
+import cadFont from "@/assets/fonts/helvetiker_regular.typeface.json?url";
// DOM refs
const canvasContainer = ref(null)
@@ -1046,6 +1052,20 @@ function handleFileChange(file) {
reader.readAsArrayBuffer(file)
}
+async function handleCadFileChange(file) {
+ console.log('file', file)
+ if (!file) return
+
+ file = file.raw
+ const viewer = new DXFViewer();
+ let dxf = await viewer.getFromFile(file, cadFont);
+ dxf.scale.set(0.001, 0.001, 0.001)
+ dxf.position.x = -3
+ dxf.position.y = 1
+ dxf.rotation.x = -Math.PI / 2
+ // Add the geometry to the scene
+ scene.add(dxf);
+}
function cleaupModel() {
if (modelGroup) {
diff --git a/src/core/engine/SceneHelp.ts b/src/core/engine/SceneHelp.ts
index c7680c1..a7350cd 100644
--- a/src/core/engine/SceneHelp.ts
+++ b/src/core/engine/SceneHelp.ts
@@ -64,9 +64,21 @@ export default class SceneHelp {
this.scene.add(gridHelper2)
// 光照
- const ambientLight = new THREE.AmbientLight(0xffffff, 0.8)
+ // const ambientLight = new THREE.AmbientLight(0xffffff, 0.8)
+ // this.scene.add(ambientLight)
+
+ // 光照
+ const ambientLight = new THREE.AmbientLight(0xffffff, 1.5)
this.scene.add(ambientLight)
+ const directionalLight = new THREE.DirectionalLight(0xffffff, 1.5)
+ directionalLight.position.set(5, 5, 5).multiplyScalar(3)
+ directionalLight.castShadow = true
+ this.scene.add(directionalLight)
+
+ const hemisphereLight = new THREE.HemisphereLight(0xffffff, 0x444444, 1)
+ this.scene.add(hemisphereLight)
+
// const directionalLight = new THREE.DirectionalLight(0xffffff, 1.5)
// directionalLight.position.set(5, 5, 5).multiplyScalar(3)
// directionalLight.castShadow = true
diff --git a/src/editor/Model2DEditor.vue b/src/editor/Model2DEditor.vue
index 60d277d..f3b5acc 100644
--- a/src/editor/Model2DEditor.vue
+++ b/src/editor/Model2DEditor.vue
@@ -20,6 +20,13 @@
批量复制
+
+
+ 添加CAD图纸
+
+
+
@@ -103,6 +110,9 @@ import EventBus from '@/runtime/EventBus'
import SceneHelp from '@/core/engine/SceneHelp'
import BulkCopy from './BulkCopy.vue'
import lodash from "lodash";
+import { DXFViewer } from 'three-dxf-viewer';
+import cadFont from "@/assets/fonts/helvetiker_regular.typeface.json?url"
+
export default defineComponent({
name: 'Model2DEditor',
@@ -291,6 +301,30 @@ export default defineComponent({
console.log("config", config, selectedItem);
}).finally();
},
+
+ async addCADDxf(file) {
+
+ // 创建一个边长为 1 的红色立方体
+ const geometry = new THREE.BoxGeometry(1, 1, 1);
+ const material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
+ const cube = new THREE.Mesh(geometry, material);
+
+
+
+ console.log('file', file)
+ if (!file) return
+
+ file = file.raw
+ const viewer = new DXFViewer();
+ let dxf = await viewer.getFromFile(file, cadFont);
+ dxf.scale.set(0.001, 0.001, 0.001)
+ dxf.rotation.x = -Math.PI / 2
+ // Add the geometry to the scene
+ const group = new THREE.Group();
+ group.add(dxf);
+ this.scene.add(group);
+ }
+
},
computed: {
state() {
diff --git a/src/editor/ModelMain.less b/src/editor/ModelMain.less
index 8c92ffd..76e0280 100644
--- a/src/editor/ModelMain.less
+++ b/src/editor/ModelMain.less
@@ -278,7 +278,7 @@
height: 30px;
display: flex;
align-items: center;
-
+ flex-direction: row;
.el-button {
margin-left: 5px;
}
@@ -289,7 +289,9 @@
background: #dcdcdc;
margin: 0 5px;
}
-
+ .el-button-group {
+ flex: 1;
+ }
&.section-bottom-toolbar {
justify-content: space-between;
@@ -352,4 +354,4 @@
align-items: center;
padding: 8px 0 8px 8px;
}
-}
\ No newline at end of file
+}