diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..feafbfe --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +*.exe filter=lfs diff=lfs merge=lfs -text +*.dll filter=lfs diff=lfs merge=lfs -text +*.pdb filter=lfs diff=lfs merge=lfs -text diff --git a/20210129/demo - wpf/D3DCompiler_47_cor3.dll b/20210129/demo - wpf/D3DCompiler_47_cor3.dll new file mode 100644 index 0000000..2d8d682 Binary files /dev/null and b/20210129/demo - wpf/D3DCompiler_47_cor3.dll differ diff --git a/20210129/demo - wpf/PenImc_cor3.dll b/20210129/demo - wpf/PenImc_cor3.dll new file mode 100644 index 0000000..2a62590 Binary files /dev/null and b/20210129/demo - wpf/PenImc_cor3.dll differ diff --git a/20210129/demo - wpf/PresentationNative_cor3.dll b/20210129/demo - wpf/PresentationNative_cor3.dll new file mode 100644 index 0000000..189636b Binary files /dev/null and b/20210129/demo - wpf/PresentationNative_cor3.dll differ diff --git a/20210129/demo - wpf/RenderApp.exe b/20210129/demo - wpf/RenderApp.exe new file mode 100644 index 0000000..427ede5 --- /dev/null +++ b/20210129/demo - wpf/RenderApp.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:189004b43b1aedeed1b8676dbe16451cfec178334a3835a87a04b3da3f117b1b +size 175743486 diff --git a/20210129/demo - wpf/clrcompression.dll b/20210129/demo - wpf/clrcompression.dll new file mode 100644 index 0000000..b9e715d --- /dev/null +++ b/20210129/demo - wpf/clrcompression.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7fa2bc7ce99ab88daffe9ab769e2def62969b9867cfe94a56dcb3079563d8b7 +size 747912 diff --git a/20210129/demo - wpf/clrjit.dll b/20210129/demo - wpf/clrjit.dll new file mode 100644 index 0000000..b020781 --- /dev/null +++ b/20210129/demo - wpf/clrjit.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:082d1f403575247c641e7497b9fbd2a82430d49c24f4b38640cfc2a1e9b97188 +size 1323400 diff --git a/20210129/demo - wpf/coreclr.dll b/20210129/demo - wpf/coreclr.dll new file mode 100644 index 0000000..0ac9b94 --- /dev/null +++ b/20210129/demo - wpf/coreclr.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6b8534bb5aececb2773953167b217400957a66177afe9ff06cf7b161f78303b +size 5153160 diff --git a/20210129/demo - wpf/mscordaccore.dll b/20210129/demo - wpf/mscordaccore.dll new file mode 100644 index 0000000..ca12071 --- /dev/null +++ b/20210129/demo - wpf/mscordaccore.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0afc24626bfe2573d1a26625e90a0d658081903ef6cb82f85db7b3c31a47bceb +size 1056632 diff --git a/20210129/demo - wpf/vcruntime140_cor3.dll b/20210129/demo - wpf/vcruntime140_cor3.dll new file mode 100644 index 0000000..ed57a73 --- /dev/null +++ b/20210129/demo - wpf/vcruntime140_cor3.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c4884947caae461ce389e80be204d035ae8438267532b4891fc17c71ccc47de +size 94080 diff --git a/20210129/demo - wpf/wpfgfx_cor3.dll b/20210129/demo - wpf/wpfgfx_cor3.dll new file mode 100644 index 0000000..eafec9a --- /dev/null +++ b/20210129/demo - wpf/wpfgfx_cor3.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60dc9b6d7227c7c878dbaa474bfdce2d5a6ca2f04f5cd72bc43065aff6428d68 +size 2124168 diff --git a/20210129/demo/Readme.md b/20210129/demo/Readme.md index 803868b..6a7745e 100644 --- a/20210129/demo/Readme.md +++ b/20210129/demo/Readme.md @@ -10,5 +10,7 @@ 5. 运行wamp程序,浏览器输入网址:[http://localhost/demo/index.html](http://localhost/demo/index.html) +6. 多个网格组成的构件,可以将构件的mesh值改为数组形式,里面放入多个网格位置索引 + # Q&A记录 diff --git a/20210129/demo/js/loader.js b/20210129/demo/js/loader.js index b5a4fd0..d422eda 100644 --- a/20210129/demo/js/loader.js +++ b/20210129/demo/js/loader.js @@ -20,7 +20,7 @@ BIMLoader = function(json) var scene = new THREE.Scene(); json.instances.forEach(element => { - var object = ParseInstance(element, meshes[element.mesh]); + var object = ParseInstance(element, meshes, element.mesh); scene.add(object); }); @@ -55,7 +55,7 @@ BIMLoader = function(json) return geometry; } - function ParseInstance(instanceJson, mesh) + function ParseInstance(instanceJson, meshes, index) { var obj = new THREE.Object3D(); @@ -77,13 +77,26 @@ BIMLoader = function(json) if(instanceJson.info) obj.userData = instanceJson.info; - // 边框 - var edges = new THREE.EdgesGeometry(mesh.geometry); - var line = new THREE.LineSegments(edges, new THREE.LineBasicMaterial({color: 0xff0000})); - - obj.add(mesh); - obj.add(line); + if(Array.isArray(index)) + { + index.forEach(element => { + PutMesh(meshes[element], obj); + }); + } + else + { + PutMesh(meshes[index], obj); + } return obj; } + + function PutMesh(mesh, obj) + { + var edges = new THREE.EdgesGeometry(mesh.geometry); + var line = new THREE.LineSegments(edges, new THREE.LineBasicMaterial({color: 0xff0000})); + + obj.add(mesh); + obj.add(line); + } } \ No newline at end of file diff --git a/20210129/demo/js/main.js b/20210129/demo/js/main.js index c213891..b156bdc 100644 --- a/20210129/demo/js/main.js +++ b/20210129/demo/js/main.js @@ -28,8 +28,15 @@ loader.load( var bimScene = BIMLoader(JSON.parse(data)); var box = new THREE.Box3(); box.expandByObject(bimScene); - box.expandByScalar(10000); - var cameraPos = new THREE.Vector3(box.min.x, box.min.y, box.max.z); + var center = new THREE.Vector3(); + box.getCenter(center); + var size = new THREE.Vector3(); + box.getSize(size); + var result = size.x > size.y ? size.x : size.y; + result = result > size.z ? result : size.z; + var maxLength = Math.round(result); + var radius = center.distanceTo(new THREE.Vector3(center.x + (maxLength/2), center.y + (maxLength/2), center.z + (maxLength/2))); + var cameraPos = new THREE.Vector3(center.x + radius * Math.cos(Math.PI/18) * Math.cos(Math.PI/4), center.y - radius * Math.cos(Math.PI/18) * Math.sin(Math.PI/4), center.z + radius * Math.sin(Math.PI/18)); camera.position.copy(cameraPos); controls.target = box.getCenter(); scene.add(bimScene);