[Frontend] 更換urn、新增電梯變色函式
This commit is contained in:
		
							parent
							
								
									a443c06001
								
							
						
					
					
						commit
						b9c2f76f11
					
				@ -49,12 +49,15 @@
 | 
				
			|||||||
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
 | 
					    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
 | 
				
			||||||
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.7/jstree.min.js"></script>
 | 
					    <script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.7/jstree.min.js"></script>
 | 
				
			||||||
    <script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.js"></script>
 | 
					    <script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <script src="js/forge/modeltest.js"></script>
 | 
					    <script src="js/forge/modeltest.js"></script>
 | 
				
			||||||
 | 
					    <!--<script src="js/forge/AdnLevelSectionPanel.js"></script>-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <script>
 | 
					    <script>
 | 
				
			||||||
        $(document).ready(function () {
 | 
					        $(document).ready(function () {
 | 
				
			||||||
            launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDLm53ZA');
 | 
					            //launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dnNjb2RlX2ZvcmdlX3Rlc3QvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDLm53ZA');
 | 
				
			||||||
 | 
					            launchViewer('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6dGEzaHFzZmZ6cWJub3V4a3BsZGt1a3NldzRzajIxdzUtYmltc19tb2RlbHMvJUUzJTgwJTkwJUU1JThGJUIwJUU1JThDJTk3JUU0JUI4JUFEJUU4JThGJUIxJUU1JUE0JUE3JUU2JUE4JTkzJUUzJTgwJTkxQVJDMjAyMjEyMDEubndk');
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        function move1Floor() {
 | 
					        function move1Floor() {
 | 
				
			||||||
            setElevatorSpeed(0.2);
 | 
					            setElevatorSpeed(0.2);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,15 +1,7 @@
 | 
				
			|||||||
var viewer;
 | 
					var viewer;
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Initialize sensor values
 | 
					 | 
				
			||||||
//let sensorVals = [];
 | 
					 | 
				
			||||||
let fragProxy;
 | 
					let fragProxy;
 | 
				
			||||||
var targetFloorZ;
 | 
					var targetFloorZ;
 | 
				
			||||||
var elevatorSpeed;
 | 
					var elevatorSpeed;
 | 
				
			||||||
// for (let i = 0; i < devices.length; i++) {
 | 
					 | 
				
			||||||
//     sensorVals[i] = Math.random();
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
function launchViewer(urn) {
 | 
					function launchViewer(urn) {
 | 
				
			||||||
    var options = {
 | 
					    var options = {
 | 
				
			||||||
@ -19,37 +11,10 @@ function launchViewer(urn) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    Autodesk.Viewing.Initializer(options, () => {
 | 
					    Autodesk.Viewing.Initializer(options, () => {
 | 
				
			||||||
        viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer'));
 | 
					        viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer'));
 | 
				
			||||||
        //viewer = new Autodesk.Viewing.Viewer3D(document.getElementById('forgeViewer'));
 | 
					        //viewer = new Autodesk.Viewing.Viewer3D(document.getElementById('forgeViewer'));//沒有工具列
 | 
				
			||||||
        viewer.start();
 | 
					        viewer.start();
 | 
				
			||||||
        var documentId = 'urn:' + urn;
 | 
					        var documentId = 'urn:' + urn;
 | 
				
			||||||
        Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
 | 
					        Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        //test 
 | 
					 | 
				
			||||||
        // for (let i = 0; i < urn.length; i++) {
 | 
					 | 
				
			||||||
        //     Autodesk.Viewing.Document.load(urn[i]["urn"], async (doc) => {
 | 
					 | 
				
			||||||
        //         let viewables = doc.getRoot().getDefaultGeometry();
 | 
					 | 
				
			||||||
        //         let model = await viewer.loadDocumentNode(doc, viewables, {
 | 
					 | 
				
			||||||
        //             preserveView: false,
 | 
					 | 
				
			||||||
        //             keepCurrentModels: true,
 | 
					 | 
				
			||||||
        //             placementTransform: (new THREE.Matrix4()).setPosition(urn[i]["xform"]),
 | 
					 | 
				
			||||||
        //             keepCurrentModels: true,
 | 
					 | 
				
			||||||
        //             globalOffset: {
 | 
					 | 
				
			||||||
        //                 x: 0,
 | 
					 | 
				
			||||||
        //                 y: 0,
 | 
					 | 
				
			||||||
        //                 z: 0
 | 
					 | 
				
			||||||
        //             }
 | 
					 | 
				
			||||||
        //         });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        //         await viewer.waitForLoadDone(); //!<<< Wait for loading materials, properties and geometries for this model (URN)
 | 
					 | 
				
			||||||
        //     });
 | 
					 | 
				
			||||||
        // }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        //loadHeatmaps(viewer.getAllModels()[0]); //!<<< equals to viewer.model
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -89,8 +54,65 @@ function onDocumentLoadSuccess(doc) {
 | 
				
			|||||||
         var currSelection = viewer.getSelection();
 | 
					         var currSelection = viewer.getSelection();
 | 
				
			||||||
         var domElem = document.getElementById('id_printer');
 | 
					         var domElem = document.getElementById('id_printer');
 | 
				
			||||||
         domElem.innerText = currSelection[0];
 | 
					         domElem.innerText = currSelection[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         //var color = new THREE.Vector4(255 / 255, 0, 0, 1);
 | 
				
			||||||
 | 
					         //viewer.setThemingColor(751, color);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         //var color = new THREE.Vector4(0, 1, 0, 1);
 | 
				
			||||||
 | 
					         //viewer.setThemingColor(751, color);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         //var dbid = currSelection[0]; //750;
 | 
				
			||||||
 | 
					         //var it = NOP_VIEWER.model.getData().instanceTree;
 | 
				
			||||||
 | 
					         //var indexinNames = it.nodeAccess.dbIdToIndex[dbid];
 | 
				
			||||||
 | 
					         //var indexinStrings = it.nodeAccess.names[indexinNames];
 | 
				
			||||||
 | 
					         //var nodeMainString = it.nodeAccess.strings[indexinStrings];
 | 
				
			||||||
 | 
					         //var nodeSuffixString = it.nodeAccess.nameSuffixes[indexinStrings];
 | 
				
			||||||
 | 
					         //var nodeFinalName = it.getNodeName(dbid);
 | 
				
			||||||
 | 
					         //console.log("names: " + indexinNames + ", inStrings: " + indexinStrings + ", nodeMainString: " + nodeMainString + ", nodeSuffix: " + nodeSuffixString);
 | 
				
			||||||
 | 
					         //console.log("nodeFinalName: " + nodeFinalName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         //var vp = viewer.impl.clientToViewport(event.canvasX, event.canvasY);
 | 
				
			||||||
 | 
					         //var renderer = viewer.impl.renderer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         //var dbId = renderer.idAtPixel(vp.x, vp.y);
 | 
				
			||||||
 | 
					         //if (dbId) {
 | 
				
			||||||
 | 
					         //    console.debug("Selected Id: " + dbId);
 | 
				
			||||||
 | 
					         //    //viewer.select(dbId);
 | 
				
			||||||
 | 
					         //    //viewer.impl.invalidate(true);
 | 
				
			||||||
 | 
					         //    viewer.model.getExternalIdMapping(data => console.log(data));
 | 
				
			||||||
 | 
					         //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         //set color
 | 
				
			||||||
 | 
					         //let nodeIdObj = 750;
 | 
				
			||||||
 | 
					         //this.viewer.setThemingColor(nodeIdObj, red, this.model);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         //const color = new THREE.Vector4(1.0, 0.0, 0.0, 0.5);
 | 
				
			||||||
 | 
					         //viewer.setThemingColor(751, color, null, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         var myDbid = currSelection;
 | 
				
			||||||
 | 
					         viewer.getProperties(myDbid, function (e) {
 | 
				
			||||||
 | 
					             //console.log('Entire object response ', e);
 | 
				
			||||||
 | 
					             //console.log('Properties ', e.properties);
 | 
				
			||||||
 | 
					             //foreach(item in e.properties) {
 | 
				
			||||||
 | 
					             //    if (item.displayName == "【tag_id】") {
 | 
				
			||||||
 | 
					             //        console.log(">> " + item.displayValue);
 | 
				
			||||||
 | 
					             //    }
 | 
				
			||||||
 | 
					             //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             e.properties.forEach(function (item) {
 | 
				
			||||||
 | 
					                 if (item.displayName == "【tag_id】") {
 | 
				
			||||||
 | 
					                     console.log(">> " + item.displayValue);
 | 
				
			||||||
 | 
					                 }
 | 
				
			||||||
 | 
					             });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     });
 | 
					     });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
    viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, function () {
 | 
					    viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, function () {
 | 
				
			||||||
     var instanceTree = viewer.model.getData().instanceTree;
 | 
					     var instanceTree = viewer.model.getData().instanceTree;
 | 
				
			||||||
     var allDbIdsStr = Object.keys(instanceTree.nodeAccess.dbIdToIndex);
 | 
					     var allDbIdsStr = Object.keys(instanceTree.nodeAccess.dbIdToIndex);
 | 
				
			||||||
@ -143,9 +165,11 @@ function onDocumentLoadSuccess(doc) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NOP_VIEWER.getProperties(NOP_VIEWER.getSelection(), data => console.log(data));
 | 
					    //NOP_VIEWER.getProperties(NOP_VIEWER.getSelection(), data => console.log(data));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function setElevatorFloor(floor) {
 | 
					function setElevatorFloor(floor) {
 | 
				
			||||||
    if (floor == 0)
 | 
					    if (floor == 0)
 | 
				
			||||||
        targetFloorZ = 0;
 | 
					        targetFloorZ = 0;
 | 
				
			||||||
@ -184,12 +208,13 @@ function setElevatorSpeed(speed) { //0.01 ~ 1
 | 
				
			|||||||
function movElevator() {
 | 
					function movElevator() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let tree = viewer.model.getData().instanceTree;
 | 
					    let tree = viewer.model.getData().instanceTree;//三組:(749,750,751),(755,756,757),(761,762,763)
 | 
				
			||||||
    let nodeId = 749; //10952;
 | 
					    let nodeId = 749; //10952;
 | 
				
			||||||
    let nodeId2 = 750;
 | 
					    let nodeId2 = 750;
 | 
				
			||||||
    let nodeId3 = 751;
 | 
					    let nodeId3 = 751;
 | 
				
			||||||
    let fragProxyZ = 0;
 | 
					    let fragProxyZ = 0;
 | 
				
			||||||
    var movStatus = 0; // 0=no 1=up 2=down
 | 
					    var movStatus = 0; // 0=no 1=up 2=down
 | 
				
			||||||
 | 
					    changeColor(nodeId3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (fragProxy.position.z > targetFloorZ) {
 | 
					    if (fragProxy.position.z > targetFloorZ) {
 | 
				
			||||||
@ -258,11 +283,17 @@ function movElevator() {
 | 
				
			|||||||
        if (fragProxyZ >= targetFloorZ) {
 | 
					        if (fragProxyZ >= targetFloorZ) {
 | 
				
			||||||
            requestAnimationFrame(movElevator);
 | 
					            requestAnimationFrame(movElevator);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            hideColor(nodeId3);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else if (movStatus == 1) {
 | 
					    else if (movStatus == 1) {
 | 
				
			||||||
        if (fragProxyZ <= targetFloorZ) {
 | 
					        if (fragProxyZ <= targetFloorZ) {
 | 
				
			||||||
            requestAnimationFrame(movElevator);
 | 
					            requestAnimationFrame(movElevator);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            hideColor(nodeId3);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -275,6 +306,16 @@ function movElevator() {
 | 
				
			|||||||
    //viewer.impl.sceneUpdated(true);
 | 
					    //viewer.impl.sceneUpdated(true);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function changeColor(nodeId) {
 | 
				
			||||||
 | 
					    var color = new THREE.Vector4(0, 1, 0, 1);
 | 
				
			||||||
 | 
					    viewer.setThemingColor(nodeId, color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function hideColor(nodeId) {
 | 
				
			||||||
 | 
					    var color = new THREE.Vector4(0, 1, 0, 0);
 | 
				
			||||||
 | 
					    viewer.setThemingColor(nodeId, color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//function movElevator() {
 | 
					//function movElevator() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -341,6 +382,61 @@ function getAllDbIds(viewer) {
 | 
				
			|||||||
    return allDbIdsStr.map(function (id) { return parseInt(id) });
 | 
					    return allDbIdsStr.map(function (id) { return parseInt(id) });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//釋放viewer
 | 
				
			||||||
 | 
					function ReleaseViewer() {
 | 
				
			||||||
 | 
					    viewer.finish();
 | 
				
			||||||
 | 
					    viewer = null;
 | 
				
			||||||
 | 
					    Autodesk.Viewing.shutdown();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//擴展類 刪除添加的所有DOM元素和事件
 | 
				
			||||||
 | 
					//ToolbarExtension.prototype.unload = function () {
 | 
				
			||||||
 | 
					//    if (this.subToolbar) {
 | 
				
			||||||
 | 
					//        this.viewer.toolbar.removeControl(this.subToolbar);
 | 
				
			||||||
 | 
					//        this.subToolbar = null;
 | 
				
			||||||
 | 
					//    }
 | 
				
			||||||
 | 
					//};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ---- 模型剖面 ----
 | 
				
			||||||
 | 
					function getCutPlaneParam(idx, n) {
 | 
				
			||||||
 | 
					    if (idx < 0 || !n) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const level = this.levels[idx];
 | 
				
			||||||
 | 
					    if (!level) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //const precision = Autodesk.Viewing.Private.calculatePrecision( level.elevation  );
 | 
				
			||||||
 | 
					    const model = this.viewer.model;
 | 
				
			||||||
 | 
					    const globalOffset = model.getData().globalOffset;
 | 
				
			||||||
 | 
					    const units = model.getUnitString();
 | 
				
			||||||
 | 
					    const elevRaw = Autodesk.Viewing.Private.convertUnits('ft', units, 1, level.elevation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let d = elevRaw - globalOffset.z - 0.5;
 | 
				
			||||||
 | 
					    if (n == 1)
 | 
				
			||||||
 | 
					        d = -1 * d;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return new THREE.Vector4(0, 0, n, d);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function onButtonClicked() {
 | 
				
			||||||
 | 
					    const upperSelector = document.getElementById('adn-upper-lvl-selector');
 | 
				
			||||||
 | 
					    const lowerSelector = document.getElementById('adn-lower-lvl-selector');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!upperSelector || !lowerSelector)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const upperIdx = upperSelector.selectedIndex;
 | 
				
			||||||
 | 
					    const upperCutPlaneParam = this.getCutPlaneParam(upperIdx, 1);
 | 
				
			||||||
 | 
					    const lowerIdx = lowerSelector.selectedIndex;
 | 
				
			||||||
 | 
					    const lowerCutPlaneParam = this.getCutPlaneParam(lowerIdx, -1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.viewer.setCutPlanes([upperCutPlaneParam, lowerCutPlaneParam]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function displayCuttedPlane() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Autodesk.Viewing.Document.load() failuire callback.
 | 
					 * Autodesk.Viewing.Document.load() failuire callback.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -413,4 +509,7 @@ async function loadHeatmaps(model) {
 | 
				
			|||||||
    // This value can also be a room instead of a floor
 | 
					    // This value can also be a room instead of a floor
 | 
				
			||||||
    const floorName = "01 - Entry Level";
 | 
					    const floorName = "01 - Entry Level";
 | 
				
			||||||
    dataVizExtn.renderSurfaceShading(floorName, sensorType, getSensorValue);
 | 
					    dataVizExtn.renderSurfaceShading(floorName, sensorType, getSensorValue);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
} 
 | 
					} 
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user